Используйте макрос события Workbook_SheetChange. Sh передается Worksheet Object, а Цель - это ячейка или ячейки, которые получили изменение. Простой With ... End With statement должен быть достаточным для локализации рабочей таблицы, получающей изменение.
Простой случай времени может выглядеть так.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
With Sh
If Not Intersect(Target, .Columns(1)) Is Nothing Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Dim rng As Range
For Each rng In Intersect(Target, .Columns(1))
rng.Offset(0, 4) = Now
Next rng
End If
End With
bm_Safe_Exit:
Application.EnableEvents = True
End Sub
Любые изменения, внесенные в ячейку в столбце А любого листа приведет к текущей DateTime ввода в колонке Е одного и того же листа и строки. Заново созданный рабочий лист будет немедленно затронут. Вы можете проанализировать рабочие листы, затронутые их Рабочим листом .CodeName property или Рабочий лист .Name property. Worksheet.Index property не рекомендуется, если вы не заблокируете структуру рабочей книги, чтобы рабочие листы не могли быть переупорядочены.
Вы должны использовать 'Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range)', он работает как событие Sheet_Change, за исключением того, что вместо 'Me.' вы будете использовать' Sh.' для описания листа которые запускают событие! ;) – R3uK
Это похоже на работу, вы хотите сказать это как ответ? – Spurious