1

У меня есть лист с колонкой для каждого месяца. Каждая ячейка обновляется с помощью других таблиц, но я хочу, чтобы в ячейку автоматически добавлялась дата того, когда это произойдет. Я попробовал код, чтобы сделать это, но он меняет даты на одинаковые для всего столбца. Что я упустил? Как я могу заставить его менять только дату ячейки, которая меняется в этот день. Например, в течение десяти дней десятки пользователей обновляют ячейки в этом столбце. Я не хочу, чтобы даты совпадали.

Вот что я использовал?

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

1 ответ1

0

Вы столкнулись с проблемой, потому что вы полностью заняли столбец H для AD, чтобы получить данные из другого листа, но не указали, куда будут вставлены текущая дата и время.

Предположим, что входящие данные занимают H1:AD1, тогда текущая дата должна быть введена в соседний столбец AE1, и для этого сценария OffsetColumn необходимо включить вместо переменной C, которую вы использовали с.

Ниже приведен пример кода, который поможет вам, как использовать 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: я использовал только один столбец H, вам нужно включить все необходимые столбцы.

Я надеюсь, что это поможет вам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .