Registro de data e hora do VBA do Excel na linha predefinida quando os dados são alterados em uma coluna

0

O que eu gostaria de fazer é, quando os dados são alterados em qualquer lugar de uma coluna, carimbar essa coluna com a última vez que os dados foram alterados e o nome de usuário da pessoa que os alterou. (Desculpe se isso já foi respondido em qualquer lugar. Eu tive uma pesquisa rápida e não consigo encontrá-lo. Também relativamente novo para macros e VBA ou eu provavelmente seria capaz de descobrir isso sozinho).

Image showing setup of Excel spreadsheet in its current form

Eu gostaria que o timestamp (poderia ser apenas a data) apareça na linha 9 e o nome de usuário na linha 10.

Eu encontrei algumas macros que fazem isso para gravar a alteração em uma coluna e tentei alterar as fórmulas para que funcione para uma linha, mas depois gravar a data abaixo de cada uma antes de cada vez. Este é o código que eu tentei (em uma folha de mock up em vez da real - eu considerei que poderia mudar o endereço mais tarde, se eu pudesse descobrir como funciona):

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Row = 4 Or Target.Row = 5 Then
        Cells(Target.Cell, 3, 2).Value = Now
        Cells(Target.Cell, 2, 2).Value = Environ("Username")
    End If
End Sub
DavidMBaker
fonte

Respostas:

1

Este código VBA deve fazer o que você precisa

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Row >= 1 And Target.Row <= 8 And Target.Column >= 4 Then

        Cells(9, Target.Column) = Now()
        Cells(10, Target.Column) = Application.UserName

    End If

End Sub

Você precisa adicionar este código à própria planilha. Clique em DEVELOPER na faixa de opções e clique em Visual Basic. Isto irá abrir o editor do VBA.

Escolha a planilha à esquerda e cole o código acima e salve como uma pasta de trabalho habilitada para macro.

Qualquer edição das linhas 1 a 8 após a coluna C deve adicionar um carimbo de data e hora e o nome de usuário atual às linhas 9 e 10.

Joshua Hysong
fonte
Isso funciona muito bem, obrigado. Pelo que parece, posso apenas adicionar o seguinte código para que ele também seja atualizado quando eu adicionar o restante dos dados abaixo desta seção. (Eu suspeito que atualizarei algumas das planilhas da escola agora, pois isso tornará mais fácil rastrear quem fez as alterações. Aqui está o código extra que eu suspeito que usarei: code If Target.Row & gt; = 11 And Target.Row & lt; = 200 E Target.Column & gt; = 4 Então, Cells (9, Target.Column) = Now () Células (10, Target.Column) = Application.UserName End E se code
DavidMBaker
Isso definitivamente deveria funcionar! Você pode limpar a declaração if apenas fazendo:
Joshua Hysong
Target.Row & lt; & gt; 9 e Target.Row & lt; & gt; 10
Joshua Hysong