excel - 找到最后添加的工作表 (vba)?
问题描述
如何获取在 excel 中创建的最后一张工作表?我使用了 GetSheets.Last,它可以工作,但他发现我最后一张纸在排队,这是对的,但如果我的最后一张纸不遵循排队的顺序,例如它在中间,函数 GetSheets .Last 不起作用。是否存在机器人可以找到或了解最后创建的工作表的某些功能?
感谢和问候
解决方案
当您以编程方式添加工作表时,该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
自定义属性值对工作表进行排序。
推荐阅读
- python - 从两个不同的 Django 应用程序迁移两个不同的模型
- jenkins - Github PR 检查不禁止推送
- c - unsigned long vs uint64_t(性能影响)
- php - 供应商产品视频
- tableau-api - 将 Snowflake 存储过程连接到 Tableau
- reactjs - 在 React 中处理 PUT 请求?
- python - 通过合并空白主字典中的字典,在 Python 中创建具有特定结构的 JSON
- ios - 当wifi和蜂窝关闭时,iOS应用程序如何在杀死后推送本地通知?
- python - 如何在 python .exe 中为文本着色?
- java - IntelliJIDEA 使用 JPA(休眠 H2 方言)显示类型不匹配错误,但代码编译