【问题标题】:Macro to copy certain cells and paste them into a new worksheet复制某些单元格并将它们粘贴到新工作表中的宏
【发布时间】:2016-06-24 08:47:25
【问题描述】:

我想创建一个宏,它能够根据标题单元格“G1”中的内容复制某些单元格。然后它应该打开一个新工作表并将单元格粘贴到这个新工作表中的相同单元格中。

Sub CopyCells()
Select Case Range("G1").Value
 Case "PITOT"
  ActiveSheet.Range("D4,D5,D6,D7,D8,D9,D10,D11,I4,I5,I6,I7,I8").Select
  Selection.Copy
  Sheets.Add After:=ActiveSheet
  ActiveSheet.PasteSpecial
 Case "DP FLOW TRANSMITTER"
  ActiveSheet.Range("D4,D5,D6,D7,D8,D9,D10,D11,I4,I5,I6,I7,I8").Select
  Selection.Copy
  Sheets.Add After:=ActiveSheet
 Case Else
 'do nothing
End Select
End Sub

我收到 1004 错误,这是由于我尝试复制的 Range 的长度还是我的代码语法错误?

【问题讨论】:

    标签: vba excel macros


    【解决方案1】:

    .Copy 方法不能用于多选,即选择未连接在一起的单元格区域。在您的情况下,这是因为您选择了 D 列和 I 列中的单元格。

    尝试以下方法:

    Sub CopyCells()
        Set originalSheet = activeSheet
        Set NewSheet = Sheets.Add(After:=activeSheet)
    
        NewSheet.Range("D4:D11").Value = originalSheet.Range("D4:D11").Value
        NewSheet.Range("I4:I8").Value = originalSheet.Range("I4:I8").Value
    End Sub
    

    注意将工作表设置为可以在代码中引用的对象,这是一个有用的学习方法。在范围引用中使用冒号: 是一种更简单的引用多个单元格的方法,在处理更大范围时很有用。

    【讨论】:

      【解决方案2】:

      那么,您是否阅读了整个错误消息?对我来说,它说“此操作不适用于多项选择。”这是一个死的赠品,不是吗?

      您正在尝试选择和复制不连续的范围,但这是行不通的。因此,将其分解为范围连续的步骤。

      首先将D4复制到D11,创建新工作表并粘贴。然后将 I4 复制到 I8 并粘贴到新工作表中。您可能想尝试Range("D4:D11") 之类的方法,而不是在连续范围内列出每个单独的单元格。它节省了大量的打字。只是说。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-06
        • 1970-01-01
        • 2021-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多