【问题标题】:Excel Macro: Copy and paste worksheet into another worksheetExcel 宏:将工作表复制并粘贴到另一个工作表中
【发布时间】:2014-08-07 12:30:00
【问题描述】:

我已经能够制作工作表的精确副本并将其添加到工作簿中:

Sub Test()
    Dim ws1 As Worksheet
    Set ws1 = ThisWorkbook.Worksheets("Detailed List")
    ws1.Copy ThisWorkbook.Sheets(Sheets.Count)
End Sub

但我正在尝试将复制的工作表粘贴到另一个工作表上。例如,我试图复制工作表“详细列表”并将其粘贴并覆盖“测试表”,但我能用上面的代码做的就是制作另一个工作表。任何帮助都会很棒。

【问题讨论】:

  • 我会先删除原来的“Testing Sheet”,然后在复制“Detailed List”时将其重命名为“Testing Sheet”
  • 能否在宏中重命名?我想这样做的唯一原因是能够向用户显示,一旦他/她对详细列表进行更改,曾经在该单元格中的值,所以他/她可以随时引用它

标签: vba excel


【解决方案1】:

您几乎拥有它,并且您自己的解决方案有效......但是,在完整性方面的努力......

Sub Test()
    Dim ws1 As Worksheet
    Dim ws1Copy As Worksheet
    Set ws1 = ThisWorkbook.Worksheets("Detailed List")

    ws1.Copy ThisWorkbook.Sheets(Sheets.Count) 'we can't set the copied object directly to a varaiable, but it becomes the active sheet by default

    Set ws1Copy = ActiveSheet 'assign the newly copied activesheet to a variable

    Application.DisplayAlerts = False 'supress warnings, the delete method gives the user a warning
    Sheets("Testing Sheet").Delete 'delete the testing sheet
    Application.DisplayAlerts = True 'un-supress the warnings

    ws1Copy.Name = "Testing Sheet" 'change the name of the copied sheet to the testing sheet.
End Sub

【讨论】:

    【解决方案2】:

    所以我最终这样做了:

    Worksheets("Detailed List").Range("A7").CurrentRegion.Copy
    Worksheets("Detailed Copy").Range("A7").PasteSpecial
    

    在开始运行宏之前,我首先只是复制了详细列表。然后我突出显示所有数据点和标题,并覆盖副本。我需要这样做,因为我正在制作一个宏,每当有人更改“详细列表”中的单元格时,我需要显示曾经在单元格中的旧值,因此基本上拥有两个列表副本,我可以先进行比较,然后一遍又一遍地复制列表,因此它会根据所做的任何更改自动更新自己。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多