获取由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
但是这看起来很难看,这真的是唯一的方法吗? 有人能想到另一种方式吗?
复制这个问题:
- 打开一个新的工作簿,命名第一个工作表“模板”并删除其他工作表
- alt-f11 – 插入代码模块并粘贴上面的代码
- F5应该告诉你它的工作原理。
- 插入工作表,使用工作表选项卡将其拖动到集合的末尾
- 将其设置为VBA IDE中的VeryHidden
- 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