Мне необходимо на каждом листе книги, вносить дату и время последнего изменения листа в отдельную ячейку.
Я уже нашел хороший код, проверил, всё работает:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False: Application.EnableEvents = False NPAGE = ActiveSheet.Name Sheets(NPAGE).Cells(1, 8) = Date Sheets(NPAGE).Cells(1, 9) = Time Sheets(NPAGE).Cells(1, 11) = Environ("UserName") Application.ScreenUpdating = True: Application.EnableEvents = True On Error GoTo 0 End Sub
[/vba]
Но спустя время заметил, что после срабатывания, функция "Отменить" в Excel становится недоступной.
Есть ли какие-либо варианты, чтобы избежать этой проблемы? Возможно, есть вариант запоминать измененные страницы и вносить значения последнего редактирования на этих страницах, скажем, при закрытии книги или её сохранении?
Мне необходимо на каждом листе книги, вносить дату и время последнего изменения листа в отдельную ячейку.
Я уже нашел хороший код, проверил, всё работает:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False: Application.EnableEvents = False NPAGE = ActiveSheet.Name Sheets(NPAGE).Cells(1, 8) = Date Sheets(NPAGE).Cells(1, 9) = Time Sheets(NPAGE).Cells(1, 11) = Environ("UserName") Application.ScreenUpdating = True: Application.EnableEvents = True On Error GoTo 0 End Sub
[/vba]
Но спустя время заметил, что после срабатывания, функция "Отменить" в Excel становится недоступной.
Есть ли какие-либо варианты, чтобы избежать этой проблемы? Возможно, есть вариант запоминать измененные страницы и вносить значения последнего редактирования на этих страницах, скажем, при закрытии книги или её сохранении?fijer
Может быть нет необходимости писать именно в ячейку, а достаточно в комментарии? При этом можно все записывать в один комментарий, а не в три. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Target.Parent.Cells(1, 8).Comment.Text CStr(Date) Target.Parent.Cells(1, 9).Comment.Text CStr(Time) Target.Parent.Cells(1, 11).Comment.Text Environ("UserName") End Sub
[/vba]
Может быть нет необходимости писать именно в ячейку, а достаточно в комментарии? При этом можно все записывать в один комментарий, а не в три. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Target.Parent.Cells(1, 8).Comment.Text CStr(Date) Target.Parent.Cells(1, 9).Comment.Text CStr(Time) Target.Parent.Cells(1, 11).Comment.Text Environ("UserName") End Sub