2015-09-28 2 views
0

Привет, у меня есть код, который идеально должен хранить время, в которое оно было последним изменено для каждого листа в книге. Однако этот код, который я реализовал, кажется довольно непоследовательным и неточным. Иногда он хранит время, которое я только что посетил на странице, иногда код не обновляется, как только я делаю выпуск. Кроме того, у меня есть работающие часы на ячейке A1, поэтому он также увеличивает перекрытие записанных ячеек. Есть ли какие-либо улучшения или альтернативы коду? Спасибо.Непоследовательное последнее модифицированное кодирование таблиц Excel

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

    If ActiveSheet.Name = "Index" Then Exit Sub 

    Application.EnableEvents = 0 

    i = ActiveSheet.Index 

    With Sheets("Index") 

     .Cells(i, 1) = ActiveSheet.Name 
     .Cells(i, 2) = Now 

    End With 

    Application.EnableEvents = 1 

End Sub 

ответ

2

Лучше, если вы con't использовать ActiveSheet, но вместо того, чтобы использовать Sh параметр:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

    If Sh.Name = "Index" Then Exit Sub 

    i = Sh.Index 

    With Sheets("Index") 

     .Cells(i + 1, 1) = Sh.Name 
     .Cells(i + 1, 2) = Now 

    End With 

End Sub 

Технически вам не нужно отключить события, так как Exit Sub предотвратит петлю.

+1

@paulbica - good points –

+0

it stills регистрирует время, которое я посетил на листе, и не изменяю – Niva

Смежные вопросы