Atualiza uma célula na mudança com uma data para um número de células em uma planilha

1

Eu tenho uma planilha com uma coluna para cada mês. Cada célula é atualizada por meio de outras planilhas, mas eu quero uma data adicionada automaticamente à célula para saber quando isso acontece. Eu tentei código para fazer isso, mas altera as datas para o mesmo para toda a coluna. O que eu perdi? Como faço para alterar apenas a data da célula que muda naquele dia? Por exemplo, durante um período de dez dias, dezenas de usuários atualizam células nessa coluna. Eu não quero as datas iguais.

Aqui está o que eu usei?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim targetRng As Range
Dim rng As Range
Dim c As Integer

Set targetRng = Intersect(Application.ActiveSheet.Range("H:H"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("J:J"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("L:L"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("N:N"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("P:P"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("R:R"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("T:T"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("V:V"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("X:X"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("Z:Z"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("AB:AB"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("AD:AD"), Target)

c = 1

If Not targetRng Is Nothing Then
    Application.EnableEvents = False
      For Each rng In targetRng
        If Not VBA.IsEmpty(rng.Value) Then
          rng.Offset(0, c).Value = Now
          rng.Offset(0, c).NumberFormat = "m/dd/yyyy"
        Else
       rng.Offset(0, c).ClearContents
       End If

    Next
    Application.EnableEvents = True

    End If

    End Sub
    
por Terrib 25.02.2018 / 14:08

1 resposta

0

Você está enfrentando o problema porque ocupou totalmente a Coluna H no AD para obter os dados de outra Planilha, mas não especificou onde a Data e a Hora Atual serão inseridas.

Suponha que os dados recebidos ocupem H1: AD1, então a data atual deve ser inserida na coluna adjacente AE1 e para que este script OffsetColumn seja necessário para ser incluído no lugar da variável C , você usou com.

Abaixo está um exemplo de código irá ajudá-lo, como usar o xOffsetColumn.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer

Set WorkRng = Intersect(Application.ActiveSheet.Range("H:H"), Target)
xOffsetColumn = 1

If Not WorkRng Is Nothing Then
    Application.EnableEvents = False

    For Each Rng In WorkRng

        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/yyyy hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next

    Application.EnableEvents = True
End If

End Sub

NB: Eu usei apenas uma coluna é H, você precisa incluir todas as colunas necessárias.

Espero que isso ajude você.

    
por 26.02.2018 / 08:12