获取由Worksheet.Copy复制的最后一个工作表上的句柄

我试图获得由复制操作创build的工作表的句柄。 以下代码用于工作:

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 

但是在将非常隐藏的工作表添加到工作簿时停止。 现在我的表格(Sheets.Count)得到了VeryHidden表格,而不是我最后添加的表格。

我当然可以使用

 Set ws = Sheets(wsTempl.Name & " (2)") ws.Name = "p" & pageCount 

但是这看起来很难看,这真的是唯一的方法吗? 有人能想到另一种方式吗?

复制这个问题:

  1. 打开一个新的工作簿,命名第一个工作表“模板”并删除其他工作表
  2. alt-f11 – 插入代码模块并粘贴上面的代码
  3. F5应该告诉你它的工作原理。
  4. 插入工作表,使用工作表选项卡将其拖动到集合的末尾
  5. 将其设置为VBA IDE中的VeryHidden
  6. F5再次,第一个代码清单应该失败

原因似乎是Copy After:=在VeryHidden Sheets之后不复制,因此重命名表单的代码部分总是重命名VeryHidden表单

工作表的复制方法会使新创build的工作表处于活动状态,因此您应该可以执行此操作。

 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