Как создать метку времени только при вводе указанного значения c - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь написать подпрограмму, которая создает метку времени в столбце J, когда в столбец I введен текст «ДА».

Сейчас у меня есть рабочая подпрограмма, которая создает метку времени в столбец J, когда ячейка в столбце I изменяется. Но мои попытки изменить этот сабвуфер в соответствии с вышеуказанными критериями пока не увенчались успехом. Не могли бы вы посоветовать или указать мне правильное направление?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim speakRange As Range
Dim timeSpeakRange As Range

Set speakRange = Range("I3:I1000")

If Intersect(Target, speakRange) Is Nothing Then Exit Sub

'Stop
Application.EnableEvents = False

'column for timestamp
Set timeSpeakRange = Range("J" & Target.Row)


'Determine if the input date/time should change

If timeSpeakRange .Value = "" Then

    timeSpeakRange .Value = Date

End If


'Turn events back on
Application.EnableEvents = True


End Sub

1 Ответ

0 голосов
/ 25 февраля 2020

Вместо раннего выхода отрицайте свое утверждение. Оттуда выполните простую проверку Target = "YES" и, если это так, получите доступ к ячейке справа, используя Offset(0, 1), чтобы добавить дату.


Вам может потребоваться отформатировать дату, а также оформить комментарии @BigBen ниже для идеальной обработки ошибок

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("I:I")) Is Nothing Then
    If Target = "YES" Then
        Application.EnableEvents = False

            Target.Offset(, 1) = Date

        Application.EnableEvents = True
    End If
End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...