Отметка времени в Excel с очень конкретными требованиями
Мне нужна помощь с кодом Excel VBA, который может сделать следующее. Я в лучшем случае начинающий программист на VBA, мне просто нужно кое-что поработать с таблицей, над которой я работаю.
Я знаю, что существует бесчисленное множество вопросов и ответов о кодах временных меток, и я прочитал их ОЧЕНЬ много, но я не могу найти тот, который соответствует моим потребностям. Я часами искал, вот почему я спрашиваю вместо этого. Вот что мне нужно:
Когда ячейка в столбце A изменяется, а соответствующая ячейка в столбце B пуста, отметьте дату ячейкой в столбце B с текущей датой.
Впоследствии, если ячейка в столбце A изменяется и соответствующая ячейка в столбце B не является пустой (поскольку она уже содержит отметку даты из предыдущего изменения столбца A), отметка даты в ячейке в столбце B не должна изменяться., Это включает в себя, если ячейка в столбце A заменяется тем же значением.
Если ячейка в столбце A очищена либо самостоятельно, либо как часть выбора нескольких ячеек и очистки содержимого, отметка даты в ячейке в столбце B не должна изменяться ИЛИ удаляться.
Только если отметка даты очищается вручную в ячейке в столбце B, она должна быть снова помечена датой с текущей датой, если значение соответствующей ячейки в столбце A снова изменено (в основном, сброс).
Первая строка - это метки, поэтому ничего не делайте с ячейками в первой строке.
Надеюсь, я прояснил это достаточно. Если нет, пожалуйста, дайте мне знать. Заранее спасибо за любые ответы, и я извиняюсь, если это было доступно где-то, и я просто не мог найти это.
1 ответ
Попробуйте следующий код. И, пожалуйста, дайте нам обратную связь, пожалуйста!
Так как вы можете применить изменение ко многим ячейкам одновременно (например, нажав Ctrl+Enter), я использовал цикл для навигации по каждой изменяемой ячейке.
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target.Cells
If cell.Row > 1 And cell.Column = 1 Then
If cell.Offset(0, 1).Value = "" Then
cell.Offset(0, 1).Value = Now()
End If
End If
Next
End Sub