工作表的属性(Microsoft Excel)
Laurie知道如何查看Excel工作簿的属性。但是,她想做的是查看相对于单个工作表的相似属性。例如,她想知道是否有一种方法可以查看各个工作表的属性,例如创建日期,修改日期,作者或“最后修改者”。
不幸的是,Excel不会跟踪工作表的此类信息。我们唯一能找到的解决方法是开发您自己的有关工作簿中工作表信息的记录。开发Workbook_SheetChange事件处理程序的一种明显方法。下面是可以在Visual Basic编辑器中添加到ThisWorkbook对象的示例:
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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(7542)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。