Como o VBA atualiza um valor de célula com base em outra célula

0

Eu olhei toda a troca de pilha e não vi exatamente o que estou procurando. Eu tenho uma extensa lista de alguns itens que precisam de calibração constante em diferentes datas e intervalos, e o que eu estou tentando fazer é fazer um VBA / Macro para que eu possa atualizar a data de calibração de qualquer item específico sem ter que olhar para cada entrada individual ou usando = VLOOKUP (). até agora não tenho nada sólido posso chamar um programa ainda, mas o que eu tinha imaginado era em uma célula escrever o número de ID do item, em outra célula a nova data de calibração exp e ter um botão ao lado deles para que seja buscas pelo ID #, move uma coluna para a direita e substitui o texto na célula pela nova data. Simples o suficiente para explicar, mas dado o fato de que eu comecei a aprender sobre o VBA quatro horas atrás, está provando ser um desafio. Até agora eu brinquei com algum código sem sucesso:

range("a1").Formula = "=CELL("address", INDEX(H:J, MATCH(L11,H:H, 0),2))"

ActiveCell.FormulaR1C1 = "=INDEX(R[-5]C[-9], 3, 2, )"

Vou fornecer mais informações ou contexto se alguém precisar!

    
por WestWindsDemon 26.07.2017 / 22:00

2 respostas

0

Ao usar citações dentro de uma fórmula, você deve dobrá-las:

Range("A1").Formula = "=CELL(""address"", INDEX(H:J, MATCH(L11,H:H, 0),2))"
ActiveCell.FormulaR1C1 = "=INDEX(R[-5]C[-9], 3, 2, )"
    
por 26.07.2017 / 23:45
0

Isso vai te deixar bem perto. Você pode ajustar isso para ajustar seus dados. Os comandos MsgBox comentados podem ser excluídos, mas são úteis para depuração.

Sub SetCalDate()

    'Set up variables
    Dim ID, RowNum As Integer
    Dim NewCalDate As Date
    Dim IDNums As Range

    'Initialize variables
    ID = Range("A1").Value           'Assumes the ID to Find is in A1,
    NewCalDate = Range("B1").Value   'and the NewCalDate is in B1.
    'MsgBox NewCalDate
    Set IDNums = Range("C1:C10")     'This is the range of ID's to be searched.
    'You might need something like Set IDNums = Worksheets("Sheet3").Range("C1:C10")
    'if the ID numbers are on a different sheet.

    'Find the ID in IDNums
    RowNum = Application.WorksheetFunction.Match(ID, IDNums, 0)
    'MsgBox RowNum
    Range("D" & RowNum) = NewCalDate    'Assumes the CalDates are in column D.

End Sub

Se você quiser atribuir a macro a um botão, coloque o código em um novo módulo primeiro, em seguida, faça um botão e atribua a macro SetCalDate () a ele conforme explicado

    
por 26.07.2017 / 23:46