【问题标题】:New Sheet keeps overwriting old name新工作表不断覆盖旧名称
【发布时间】:2019-08-17 11:09:53
【问题描述】:

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

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

【问题讨论】:

    标签: excel vba


    【解决方案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
    

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

    【讨论】:

      【解决方案2】:

      您将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?

      【讨论】:

        猜你喜欢
        • 2022-06-15
        • 2021-12-03
        • 1970-01-01
        • 2017-07-28
        • 2018-05-28
        • 1970-01-01
        • 1970-01-01
        • 2015-09-14
        • 1970-01-01
        相关资源
        最近更新 更多