Я относительно новичок в Excel VBA и собирался сделать интересный код для задачи на работе.
Я хотел бы указать точное время, когда документ зарегистрирован как «полученный» на листе 1, и сохранять его статичным.Лист 1 состоит из общей информации (A: K) + 12 столбцов, представляющих месяцы года 2019 (L: W).
Я хочу, чтобы Excel установил фиксированную метку времени только тогда, когда в ячейку введено «1».(1 = Получено, 2 = Документы не нужны в этом месяце.)
Для улучшения навигации было бы лучше, если бы временная метка исправления появилась в той же ячейке на Листе 2, которая идентична Листу 1 (за исключением записей вячеек месяца).
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myTableRange As Range
Dim myDateTimeRange As Range
Set myTableRange = Range("L3:W350")
If Intersect(Target, myTableRange) Is Nothing Then Exit Sub
Set myDateTimeRange = Worksheets("Sheet2").Range("L:W" & Target.Row)
If myDateTimeRange.Value = "" Then
myDateTimeRange.Value = Now
End If
If (myDateTimeRange.Value = 2) Then
myDateTimeRange.Value = Empty
End If
If IsEmpty(myDateTimeRange.Value) Then
myDateTimeRange.Value = Empty
End If
End Sub
У меня есть 2 основных проблемы: -Первое, в настоящее время я не могу перенести информацию с листа1 на лист2 через 1 столбец (Настройка Set myTableRange = Range("L3:L350")
и более поздние Set myDateTimeRange = Worksheets("Sheet2").Range("L" & Target.Row)
работать, но я не могу понять, как расширить это на несколько столбцов (L: W).
Вторая проблема возникает, когда я использую Range.Value = Now
ячейка в Sheet2 обновляется каждый раз, когда я нажимаю на ячейкуне тогда, когда я на самом деле набираю запись. Кроме того, If myDateTimeRange.Value = 1 Then myDateTimeRange.Value = Now
не создает вывод.
Если вы сможете вести меня в правильном направлении, это избавит меня от проб и ошибок.