3

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

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(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 Sheet

4

1 回答 1

4

工作表的 Copy 方法使新创建的工作表处于活动状态,因此您应该能够执行此操作。


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

于 2009-08-08T15:01:09.610 回答