macros复制某些单元格并将其粘贴到一个新的工作表

我想创build一个能够复制某些单元格的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错误,这是由于我试图复制的范围的长度或我的代码的语法错误?

.Copy方法不能用于多个select,也就是您select未连接在一起的一组单元格的位置。 在你的情况下,这是因为你正在select列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 

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

那么,你读了整个错误信息吗? 对我来说它说:“这个行动不会在多个select。” 这是一个死的赠品,不是吗?

你正在尝试select和复制不连续的范围,这是行不通的。 所以把它分成几个连续的步骤。

先将D4复制到D11,创build新的工作表并粘贴。 然后将I4复制到I8并粘贴到新的工作表。 你可能想尝试一些像Range("D4:D11")而不是将每个单独的单元格列在一个连续的范围内。 这节省了很多打字。 只是说。