新工作表继续覆盖旧名称

时间:2019-03-26 23:49:59

标签: excel vba

我正在尝试复制工作表并根据变量将其重命名,这是可行的。问题是它在复制过程中更改了模板工作表的名称。有任何解决方法的想法吗?

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

2 个答案:

答案 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

如果我的理解是正确的,那么我会喜欢这种方式,因为如果用户开始四处移动工作表,您可能会失去对索引的控制。