Mam arkusz roboczy z kolumną na każdy miesiąc. Każda komórka jest aktualizowana za pomocą innych arkuszy, ale chcę, aby data była dodawana automatycznie do komórki, kiedy to nastąpi. Próbowałem to zrobić, ale zmienia to daty na takie same dla całej kolumny. Co mnie ominęło? Jak mogę to zmienić, aby zmienić tylko datę komórki, która zmienia się tego dnia. Na przykład w ciągu dziesięciu dni dziesiątki użytkowników aktualizują komórki w tej kolumnie. Nie chcę, żeby daty były takie same.
Oto czego użyłem?
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
Odpowiedzi:
Masz do czynienia z tym problemem, ponieważ całkowicie zająłeś kolumnę H do AD, aby uzyskać dane z innego arkusza, ale nie określiłeś, gdzie zostanie wstawiona bieżąca data i godzina.
Załóżmy, że przychodzące dane zajmują H1: AD1, a następnie w sąsiedniej kolumnie AE1 należy wprowadzić bieżącą datę, a dla tego skryptu OffsetColumn należy dołączyć zamiast zmiennej C , z którą korzystałeś.
Poniżej znajduje się przykładowy kod, który pomoże ci, jak korzystać z xOffsetColumn.
Uwaga: Użyłem tylko jednej kolumny H, musisz uwzględnić wszystkie wymagane kolumny.
Mam nadzieję, że ci to pomoże.
źródło