获取由Worksheet复制的最后一张工作表上的句柄。复制
问题描述:
我试图获取由复制操作创建的工作表的句柄。根据用于工作代码:获取由Worksheet复制的最后一张工作表上的句柄。复制
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.Count)正在获取VeryHidden表格,而不是最后添加的表格。
当然,我可以用
Set ws = Sheets(wsTempl.Name & " (2)")
ws.Name = "p" & pageCount
,但似乎这么丑,这真的是唯一的出路?有人能想到另一种方式吗?
复制问题:
- 打开一个新的工作簿,命名为第一个工作表“模板” &删除其它纸张
- ALT-F11 - 插入代码模块&粘贴上面的代码
- F5应该告诉你它的工作原理。
- 插入工作表,使用工作表标签将其拖动到集合的末尾
- 将其设置为VeryHidden在VBA IDE
- F5再次,第一个代码列表失效
原因似乎是即复制完成后= =不会在非常隐藏的表格之后复制,因此重命名表格的代码部分总是重命名非常隐藏的表格
答
工作表的复制方法会使新创建的表格处于活动状态,因此您应该能够做这个。
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
+0
当然,这是正确的在我面前:如何捕获通过复制/粘贴Excel VBA添加工作表 - 也指出了这一点。但我没有想到这样做。你所建议的是我认为是最好的方法。非常感谢。 – 2009-08-09 05:26:40
要打破第二个代码清单,只需命名您的模板:'Template(3)'并更新您的代码。现在复制将创建'模板(4)'并且代码被破坏。好吧,我们可以保留一条规则,我们应该命名我们的模板'Template(x)',其中x> 1 – 2009-08-08 13:01:52
我的意思是:“..我们只是有一个命名约定,不能命名我们的模板'Template(x)' x> 1“ – 2009-08-08 13:06:13
同时确保在运行之间删除额外的纸张,否则它将失败,因为纸张已经存在。 – 2009-08-08 14:22:57