Как вернуть отметку времени, когда определенное значение введено в определенную ячейку - PullRequest
0 голосов
/ 17 февраля 2019

Я создаю таблицу в формате отчета в Excel и пытаюсь получить метку времени для автоматического ввода в ячейку «P4», если ячейка «I6» имеет значение «Завершено»

I 'я пытался использовать формулы = IF, что сработало, но я не могу переключать итеративные вычисления на машинах, на которых будет работать этот лист.

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

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As String
    Set r = Cells("I6")
    If r.Value Is Nothing Then Exit Sub
    If r.Value <> "Completed" Then Exit Sub
    If r.Offset(-2, 7).Value <> "" Then Exit Sub
    Application.EnableEvents = False
        r.Offset(-2, 7) = Now()
    Application.EnableEvents = True
    End If
End Sub

Я ожидаю, что код выдаст мне текущую метку времени в ячейке «P4», как только значение «Завершено» введено в ячейку «I6», но ничего не отображается.Как бы я исправил это, чтобы получить основанные на значении временные метки?

1 Ответ

0 голосов
/ 17 февраля 2019

Поскольку этот sub вызывается при каждой смене ячейки (и вы можете использовать его позже для других проверок ячеек), сначала проверьте Intersect, не затронута ли ваша ячейка.

Измененодиапазон задается как Target (это может быть одна ячейка или полный диапазон, например, когда вы вставляете ее).Если это пересекается с вашей контролируемой ячейкой I6, вы можете пойти ...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim RelevantArea As Range

    Set RelevantArea = Intersect(Target, Me.Range("I6"))
    If Not RelevantArea Is Nothing Then
        If Target.Value = "Completed" Then
            Application.EnableEvents = False
            Me.Range("P4").Value = Now()
            Application.EnableEvents = True
        End If
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...