用于复制特定单元格并将其粘贴到新工作表中的宏

时间:2016-06-24 08:47:26

标签: excel vba excel-vba macros

我想创建一个宏,它能够根据标题单元格中的内容复制某些单元格," 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的长度还是我的代码语法中的错误?

2 个答案:

答案 0 :(得分: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

请注意将工作表设置为可在代码中引用的对象,这是一个有用的东西。在范围引用中使用冒号:是一种引用大量单元格的更简单方法,在处理较大范围时非常有用。

答案 1 :(得分:0)

嗯,您是否阅读了整个错误消息?对我而言,它说"这个动作不会对多个选择起作用。"这是一个死的赠品,不是吗?

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

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