Vba 获取由工作表复制的上一个工作表的句柄。复制
我正在尝试获取由复制操作创建的工作表的句柄。以下代码用于工作:Vba 获取由工作表复制的上一个工作表的句柄。复制,vba,excel,excel-2003,Vba,Excel,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 但
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)得到的是非常隐藏的工作表,而不是我上次添加的工作表
我当然可以用
Set ws = Sheets(wsTempl.Name & " (2)")
ws.Name = "p" & pageCount
但这看起来很难看,这真的是唯一的办法吗?有人能想出别的办法吗
要复制此问题,请执行以下操作:
原因似乎是Copy After:=不会在VeryHidden sheet之后复制,因此重命名工作表的代码部分总是重命名VeryHidden sheet工作表的复制方法使新创建的工作表处于活动状态,因此您应该能够做到这一点
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
要打破第二个代码列表,只需将模板命名为:“模板(3)”并更新代码。副本现在将创建“模板(4)”&代码已断开。好的,好的,我们可以保留一个规则,我们应该将模板命名为“模板(x)”,x>1。我的意思是:“…我们可以有一个命名约定,不将模板命名为“模板(x)”,x>1”。同时确保在运行之间删除额外的工作表,否则它将失败,因为工作表已经存在。当然,它就在我面前:如何捕获通过在Excel VBA中复制/粘贴添加的工作表-也指出了这一点。然而,我并没有想过这样做。你的建议是我认为最好的方法。非常感谢。