使用"复制粘贴范围,用于......下一个"一步

时间:2017-07-31 22:09:44

标签: excel vba excel-vba

我想使用for..next和step复制工作表之间的范围,但我不能流利使用for..next语句。我用宏记录了这一步,这里是代码:

Sub Macro1()
   Range("A2:A22").Select
   Selection.Copy
   Sheets("Sheet4").Select
   ActiveSheet.Paste
   Sheets("db_pivot").Select
   Range("C2:C22").Select
   Application.CutCopyMode = False
   Selection.Copy
   Sheets("Sheet4").Select
   Range("B2").Select
   ActiveSheet.Paste
   Sheets("db_pivot").Select
   Range("E2:E22").Select
   Application.CutCopyMode = False
   Selection.Copy
   Sheets("Sheet4").Select
   Range("C2").Select
   ActiveSheet.Paste
   Sheets("db_pivot").Select
   Range("G2:G22").Select
   Application.CutCopyMode = False
   Selection.Copy
   Sheets("Sheet4").Select
   Range("D2").Select
   ActiveSheet.Paste
End Sub

您可以使用步骤?

转换带有for..next语句的代码吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Uninon将非连续列分组到一个范围内。

Option Explicit

Sub Macro1()

Dim DBPivotSht As Worksheet
Dim Sht4 As Worksheet
Dim UnionRng As Range

' get used to allways define your worksheet objects
Set DBPivotSht = Worksheets("db_pivot")
Set Sht4 = Worksheets("Sheet4")

With DBPivotSht
    Set UnionRng = Union(.Range("A2:A22"), .Range("C2:C22"), .Range("E2:E22"), .Range("G2:G22"))
End With

' copy the entire Union range and paste in "Sheet4"
UnionRng.Copy Destination:=Sht4.Range("A2")

End Sub

答案 1 :(得分:1)

如果没有FOR ... NEXT语句,我建议使用此代码

With Sheets("db_pivot")
    .Range("A2:A22").Copy Sheets("Sheet4").Range("A1")
    .Range("C2:C22").Copy Sheets("Sheet4").Range("B2")
    .Range("E2:E22").Copy Sheets("Sheet4").Range("C2")
    .Range("G2:G22").Copy Sheets("Sheet4").Range("D2")
End With

HTH 乔恩