使用“for .... next”复制粘贴范围,步骤为

问题描述:

我想使用for..next在步骤之间复制一个范围之间的范围,但我不熟练使用for..next语句。我已经记录了与宏的步骤,这里是代码:使用“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语句与步骤转换代码?

+3

您应该尝试将录制的宏转换为您想要的形式,然后带着您无法解决的任何特定问题来到此处。 – Jarom

您可以在一个范围使用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 
+0

谢谢@Shai Rado你的代码完美工作。 –

+0

@RyanChatoeala不客气:) –

没有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 乔恩

+0

谢谢@Jon,您的解决方案正在运行。我测试了代码,但是,我认为使用联盟更加高效,特别是运行时间。 –