Изменить рабочий лист Добавить () без автоматического обновления

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

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Row = 2 Then If Target.Value = "" Then Cells(2, 4).Value = "" Else Cells(2, 4).Value = Format(Now, "H:mm:ss AM/PM") End If End If End Sub 

Он отлично работает для этой 1 ячейки. Но как я могу повторить это, когда я ввожу что-то в A3, A4..so on. Это, наверное, очень простой вопрос, но я полный новичок!

Удалите проверку для строки 2 и используйте Target.Row:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then If Target.Value = "" Then Cells(Target.Row, 4).Value = "" Else Cells(Target.Row, 4).Value = Format(Now, "H:mm:ss AM/PM") End If End If End Sub 

Это должно сделать это,

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:A99999")) Is Nothing Then If Target.Value = "" Then Cells(2, 4).Value = "" Else Cells(2, 4).Value = Format(Now, "H:mm:ss AM/PM") End If End If End Sub 

Или вы хотите добавить на каждую ячейку смещения

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:A99999")) Is Nothing Then If Target.Value = "" Then Target.Offset(0, 3).Value = "" Else Target.Offset(0, 3) = Format(Now, "H:mm:ss AM/PM") End If End If End Sub 

Рабочий лист. Изменить событие (Excel)

Свойство Range.Offset (Excel)

просто бросить в один лайнер:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Cells(Target.Row, 4).Value = IIf(Target.Value = "", "", Format(Now, "H:mm:ss AM/PM")) End Sub 

ЗАМЕТКА:

с событиями _Change вы обычно хотите добавить строки кода, которые устанавливают Application.EnableEvents в False перед строк кода, которые что-то меняют (содержимое ячеек в этом случае), а затем вернутся к True только вы закончите с изменениями . Это не значит, что дескриптор события запускается сам в бесконечном цикле

В этом случае такая обработка Application.EnableEvents не нужна, потому что вы меняете ячейки в столбце 4, а _Change события _Change эффективно делает что-то только для изменений в столбце 1

Interesting Posts

Автоматическое добавление предложения автозаполнения в Excel с использованием EPPlus и C #

Входные данные каждый тик из файла Excel

oracle vba надежная проблема подключения Windows 10 64-разрядная версия Excel 64bit

Обновление сводных таблиц на основе данных, полученных из внешних книг

Исключение для получения имени листа в ячейке

Преобразование Excel в csv – сохранение чисел после десятичной точки

Проверка выбранного пользователем диапазона или отмены

white-space: pre; игнорируется / несогласован внутри <td> в экспорте в (сохранить как) .xls

Получение пути или имени файла книги Excel

Формула экстракции гиперссылки

как получить inputStream из объекта Workbook в java

Запретить вычисление ячейки

Обновление данных Excel с использованием формы

Формула для добавления 1 в текущую ячейку, если определенный текст выбран в диапазоне ячеек

Мне нужно сравнить ячейку A1 с ячейкой A2 и поместить результат в A3. Если все слова в любом порядке

Давайте будем гением компьютера.