我正在尝试获取通过复制操作创建的工作表的句柄。以下代码曾经有效:
Dim wsTempl As Worksheet, pageCount as Long
Set wsTempl = Sheets("Template")
For pageCount = 1 To 5
wsTempl.Copy After:=Sheets(Sheets.Count)
Set ws = Sheets(Sheets.Count)
ws.Name = "p" & pageCount
Next
但在将 VeryHidden 工作表添加到工作簿时停止了。现在我的 Sheets(Sheets.Count) 正在获取 VeryHidden 工作表,而不是我最后添加的工作表。
我当然可以使用
Set ws = Sheets(wsTempl.Name & " (2)")
ws.Name = "p" & pageCount
但这看起来很丑陋,这真的是唯一的方法吗?有人能想出另一种方法吗?
复制该问题:
- 打开一个新工作簿,将第一个工作表命名为“模板”并删除其他工作表
- alt-f11 - 插入代码模块并粘贴上面的代码
- F5 应该会告诉你它可以工作。
- 插入工作表,使用工作表选项卡将其拖到集合的末尾
- 在 VBA IDE 中将其设置为 VeryHidden
- 再次按 F5,第一个代码清单应该失败
原因似乎是 Copy After:= 不会在 VeryHidden Sheets 之后复制,因此重命名工作表的代码部分总是重命名 VeryHidden Sheets
工作表的复制方法使新创建的工作表处于活动状态,因此您应该能够执行此操作。
Dim wsTempl As Worksheet, i as int
Set wsTempl = Sheets("Template")
For i = 1 To 5
wsTempl.Copy After:=Sheets(Sheets.Count)
Set ws = ThisWorkbook.ActiveSheet
ws.Name = "p" & pageCount
Next
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)