获取由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 

,但似乎这么丑,这真的是唯一的出路?有人能想到另一种方式吗?

复制问题:

  1. 打开一个新的工作簿,命名为第一个工作表“模板” &删除其它纸张
  2. ALT-F11 - 插入代码模块&粘贴上面的代码
  3. F5应该告诉你它的工作原理。
  4. 插入工作表,使用工作表标签将其拖动到集合的末尾
  5. 将其设置为VeryHidden在VBA IDE
  6. F5再次,第一个代码列表失效

原因似乎是即复制完成后= =不会在非常隐藏的表格之后复制,因此重命名表格的代码部分总是重命名非常隐藏的表格

+0

要打破第二个代码清单,只需命名您的模板:'Template(3)'并更新您的代码。现在复制将创建'模板(4)'并且代码被破坏。好吧,我们可以保留一条规则,我们应该命名我们的模板'Template(x)',其中x> 1 – 2009-08-08 13:01:52

+0

我的意思是:“..我们只是有一个命名约定,不能命名我们的模板'Template(x)' x> 1“ – 2009-08-08 13:06:13

+0

同时确保在运行之间删除额外的纸张,否则它将失败,因为纸张已经存在。 – 2009-08-08 14:22:57

工作表的复制方法会使新创建的表格处于活动状态,因此您应该能够做这个。


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