Когда вы программно добавляете лист, функция Worksheets.Add
дает ссылку на только что добавленный объект Worksheet
: обычно это код VBA, который обрабатывает «последний созданный лист».
Dim newSheet As Worksheet
Set newSheet = book.Worksheets.Add
'use newSheet object to refer to the newly added worksheet.
Если мы говорим о вручную добавленных рабочих листах, вещи должны стать более ... вовлеченными.
При условии, что вам нужно отслеживать все листы добавлены в все рабочие книги, у вас может быть надстройка Excel, которая обрабатывает события всего приложения, например:
Private WithEvents app As Excel.Application
Private Sub Workbook_Open()
Set app = ThisWorkbook.Application
End Sub
Private Sub app_WorkbookNewSheet(ByVal Wb As Workbook, ByVal Sh As Object)
If Not TypeOf Sh Is Excel.Worksheet Then Exit Sub
Dim ws As Worksheet
Set ws = Sh
ws.CustomProperties.Add "DateCreated", Now
End Sub
За исключением Application.EnableEvents = False
, я не на 100%Я убежден, что обработчик будет запускаться в каждом возможном случае, который может создать рабочий лист, но я думаю, что это лучше, чем ничего.
Тогда у вас может быть функция, которая возвращает вам пользовательское свойство DateCreated
с учетом экземпляра Worksheet
:
Public Function GetDateCreated(ByVal ws As worksheet) As Date
Dim p As CustomProperty
For Each p In ws.CustomProperties
If p.Name = "DateCreated" Then
GetDateCreated = p.Value
Exit Function
End If
Next
GetDateCreated = 0 ' unknown
End Function
И все, что осталось сделать, - это написать процедуру, которая может сортировать листы на основе связанных с ними DateCreated
значений пользовательских свойств.