我正在尝试复制工作表并根据变量将其重命名,这是可行的。问题是它在复制过程中更改了模板工作表的名称。有任何解决方法的想法吗?
Sub AddAgent()
Dim wsname As String
Dim lRow As Long
wsname = ActiveWorkbook.Sheets("Summary").Range("E5").Value
Set ws = Sheets("Agent Template")
ws.Copy After:=Sheets("Summary")
Set wsNew = Sheets(Sheets("Summary").Index + 2)
wsNew.Range("C4").Value = wsname
wsNew.Name = wsname
答案 0 :(得分:1)
您将Index
的增量增加了
Set ws = Sheets("Agent Template")
ws.Copy After:=Sheets("Summary")
Set wsNew = Sheets(Sheets("Summary").Index + 1)
请注意,如果隐藏了任何工作表,您可能会得到无法预测的结果: Copy sheet and get resulting sheet object?
答案 1 :(得分:1)
据我了解,Copy()
函数会自动将新工作表设置为ActiveSheet
。因此,您无需按索引查找它。您可以简单地访问ActiveSheet
对象的属性:
With ThisWorkbook.Worksheets
.Item("Agent Template").Copy After:=.Item("Summary")
End With
With ThisWorkbook.ActiveSheet
.Name = ThisWorkbook.Worksheets("Summary").Range("E5").Value2
.Range("C4").Value = .Name
End With
如果我的理解是正确的,那么我会喜欢这种方式,因为如果用户开始四处移动工作表,您可能会失去对索引的控制。