Лори знает, как просматривать свойства книги Excel. Однако она хотела бы просмотреть аналогичные свойства отдельных листов. Например, она задается вопросом, есть ли способ просмотреть такие свойства, как дата создания, дата изменения, автор или «автор последнего изменения» для отдельных листов.

К сожалению, Excel не отслеживает такую ​​информацию для листов. Единственный обходной путь, который мы смогли найти, — это создать собственную запись информации о листах в книге. Очевидный способ разработать обработчик событий Workbook_SheetChange. Ниже приведен пример того, что вы можете добавить к объекту ThisWorkbook в редакторе Visual Basic:

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

Dim s As Worksheet     Dim J As Integer     Dim FoundIt As Boolean

On Error Resume Next     Set s = Worksheets("Stats")

On Error GoTo 0     Application.EnableEvents = False     If s Is Nothing Then         ' Stats worksheet did not exist         Set s = Worksheets.Add(After:=Worksheets(Worksheets.Count))

s.Name = "Stats"

s.Range("A1") = "Worksheet"

s.Range("B1") = "Creator"

s.Range("C1") = "Last Modified"

s.Range("D1") = "Modifed By"

With s.Range("A1:D1")

.Font.Bold = True             .Borders(xlEdgeBottom).LineStyle = xlContinuous             .Borders(xlEdgeBottom).Weight = xlThin         End With

s.Range("A2") = s.Name         s.Range("B2") = s.CustomProperties.Creator         s.Range("C2") = Format(Now, " mm/dd/yyyy  hh:mm am/pm")

s.Range("D2") = Application.UserName     End If     J = 2     FoundIt = False     While (s.Cells(J, 1) <> "")

If s.Cells(J, 1) = ws.Name Then             FoundIt = True             s.Cells(J, 3) = Format(Now, " mm/dd/yyyy  hh:mm am/pm")

s.Cells(J, 4) = Application.UserName         End If         J = J + 1     Wend     If Not FoundIt Then         ' Worksheet name not found         s.Cells(J, 1) = ws.Name         s.Cells(J, 2) = ws.CustomProperties.Creator         s.Cells(J, 3) = Format(Now, " mm/dd/yyyy  hh:mm am/pm")

s.Cells(J, 4) = Application.UserName     End If     ws.Activate     Application.EnableEvents = True End Sub

Обработчик событий запускается каждый раз, когда вы вносите изменения в книгу. Сначала он проверяет, есть ли лист с именем Stats. Если нет, то создается рабочий лист и к нему добавляется некоторая элементарная информация. Обработчик просматривает рабочий лист статистики, чтобы определить, содержат ли там данные строку для рабочего листа, на котором произошло изменение. Если нет, то добавляется строка, но если да, информация в строке обновляется.

Обработчик отслеживает только четыре части информации — имя рабочего листа, создателя, дату последнего изменения и имя пользователя, который внес это изменение. (Свойство Creator указывает числовое значение, относящееся к программе, создавшей рабочий лист. Это не очень полезно для людей, и я включил его в качестве наглядного примера того, как можно хранить информацию.)

Помните, что это всего лишь обходной путь, и вам следует тщательно продумать, какой тип информации вы хотите отслеживать для своих рабочих листов. Затем вы можете изменить код, чтобы отразить это желание.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (7542) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.