Excel Inserir nova linha de dados da célula que muda

1

Eu tentei pesquisar, mas estou tendo problemas com a terminologia correta para obter um bom resultado.

Estou procurando uma maneira ou conselho para criar uma macro no Excel que copie os dados de uma célula e insira-os em uma nova linha sempre que ela for alterada.

Gostaria de poder acumular um histórico de cerca de 50 alterações de dados.

obrigado Jeff

    
por Jeff Patterson 31.07.2017 / 21:58

1 resposta

1

Aqui está um pequeno trecho para você começar e lhe dar algumas coisas para pesquisar. Este código irá observar a célula A1 e, se ela for alterada, registrará o tempo que ela muda e o valor que ela leva após alterar a linha 3. Isso provavelmente levará algumas lógicas adicionais para serem úteis. O código vai no código do VBA para a planilha que está mudando.

Private Sub Worksheet_Change(ByVal Target As Range)

    'WatchedCell is the cell we want to log changes of, I used cell A1
    Dim WatchedCell As Range
    Set WatchedCell = Application.ActiveSheet.Range("A1")

    'Target comes from the Worksheet_Change event and tells us what changed in the event
    'See if the watched cell is among the cells which changed
    Dim Inter As Range
    Set Inter = Intersect(WatchedCell, Target)

    'Insert a row to record the time in the column A and the value after the change in column B
    If Not Inter Is Nothing Then
        Rows(3).EntireRow.Insert
        Application.ActiveSheet.Range("A3") = Now()
        Application.ActiveSheet.Range("B3") = WatchedCell
    End If
End Sub

Uma questão importante (sugerida por Gary's Student nos comentários à sua pergunta) é que, se, por exemplo, a célula A1 é uma fórmula e só muda quando a célula A2 muda, o Worksheet_Change não reconhece o A1 como alterado quando você altera o A2 porque ele foi alterado devido ao evento Worksheet_Calculate .

    
por 01.08.2017 / 15:57