Como posso manter o histórico de alterações de dados em uma pasta de trabalho do Excel

1

Um usuário postou isso em uma pergunta diferente :

Here's some code that will watch the range A1:G12 on whatever sheet has the code in it. If r is the row that was changed, then the code will copy everything from Ar:Gr into a sheet whose code name is shtLog. (Code name is the name shown in VBA, not the name on the tab you see in Excel.) This should get you moving in the right direction.

 Private Sub Worksheet_Change(ByVal Target As Range)    
    Dim r As Integer
    Dim c As Integer
    Dim arr(1 To 1, 1 To 12)
    If Not Intersect(Target, Range("A1:G12")) Is Nothing Then
        r = Target.Row
        For c = 1 To 12
            arr(1, c) = Cells(r, c).Value
        Next
        With shtLog
            .Range(.Cells(.UsedRange.Rows.Count + 1, 1), .Cells(.UsedRange.Rows.Count + 1, 12)) = arr
        End With
    End If
End Sub

No entanto, embora eu possa ver o código que usei em um módulo e no VBA Editor não consigo ver, localizar, selecionar ou executar a macro, por isso não tenho idéia de como fazer o logger funcionar.

Alguém saberia como fazer o código funcionar e começar a gravar na planilha designada?

    
por Marv 28.09.2016 / 13:25

1 resposta

2

Não coloque em um módulo.

Essa macro é invocada automaticamente toda vez que uma alteração acontece em uma planilha, como você pode ver na primeira linha: Private Sub Worksheet_Change(ByVal Target As Range) .

No Editor do VBA, no lado esquerdo, clique duas vezes na planilha na qual deseja ter a macro (ou seja, na planilha na qual deseja acompanhar as alterações) e cole o código no lado direito.

Se você deseja depurar, siga estas etapas:

  1. Coloque um ponto de interrupção na primeira linha do código, clicando no lado esquerdo da linha. Um ponto marrom aparecerá e a linha será destacada na mesma cor, assim:
  • Faça uma alteração na planilha, por exemplo, colocando um valor em uma célula. O código irá executar e parar no breakpoint , no nosso caso na primeira linha, ele será destacado em amarelo, assim:
  • Para executar o código linha por linha, pressione F8 . Isso ajudará você a ver o que está acontecendo em cada etapa.

  • Depois de ter feito a depuração, você pode remover o ponto de interrupção clicando no ponto marrom.

  • Tenha em mente que a macro coloca valores em uma planilha chamada shtLog , você tem que criar uma planilha chamada assim ou alterar o nome no código para evitar o erro de não encontrar a planilha de destino.

        
    por 28.09.2016 / 13:42