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

时间:2009-08-08 12:57:57

标签: excel vba excel-vba excel-2003

我正在尝试获取由复制操作创建的工作表的句柄。以下代码用于工作:

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. 在VBA IDE中将其设置为VeryHidden
  6. F5,第一个代码清单应该失败
  7. 原因似乎是Copy After:=不会在VeryHidden Sheets之后复制,因此重命名工作表的部分代码总是重命名VeryHidden Sheet

1 个答案:

答案 0 :(得分:4)

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


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