Excel 宏,不使用“选择”将单元格复制为四行

Excel 宏,不使用“选择”将单元格复制为四行,excel,vba,Excel,Vba,此代码复制Sheet1中的条目!A2,第1张!B2等,并将其粘贴到活页2上,每个条目之间有3行。我想在不使用的情况下复制此代码。选择 Option Explicit Sub Copy_Paste() Dim i As Integer For i = 1 To 100 Sheets("Sheet1").Select Range("A2,B2,C2,D2,E2").Select ActiveCell.Range(Cells(i, 1), Cells(i, 2)).Se

此代码复制Sheet1中的条目!A2,第1张!B2等,并将其粘贴到活页2上,每个条目之间有3行。我想在不使用的情况下复制此代码。选择

Option Explicit

Sub Copy_Paste()

Dim i As Integer
For i = 1 To 100
    Sheets("Sheet1").Select 
    Range("A2,B2,C2,D2,E2").Select 
    ActiveCell.Range(Cells(i, 1), Cells(i, 2)).Select
    Selection.Copy 
    Sheets("Sheet2").Select 
    Cells(((i - 1) * 4) + 1, 1).Select 
    ActiveSheet.Paste 
Next i

End Sub
到目前为止,这是我所拥有的,但它不起作用

Option Explicit

Sub Copy_Paste()

Dim i As Integer
For i = 1 To 100
    Dim ws1 As Worksheet, rng As Range, act As Range
        Set ws1 = Worksheets("Data")
        Set rng = ActiveSheet.Range("A2,B2,C2,D2,E2")
        Set act = ActiveCell.Range(Cells(i, 1), Cells(i, 2))
    Selection.Copy
    Dim ws2 As Worksheet, rng2 As Range
        Set ws2 = Worksheets("Calculate")
        Set rng2 = Cells(((i - 1) * 4) + 1, 1)
    ActiveSheet.Paste
Next i

End Sub

我在一个vba代码中使用了这种类型的操作:

      'do copy from reference "Answers_Source" worksheet
    wb.Sheets("Answers_Source").Range("h1:z160").Copy

   'now paste the formulas into the student exam workbook
   wb2.Sheets("Answers").Range("h1:z160").Paste     
因此,您可以根据自己的情况对其进行编辑。

您可以使用
Range
对象的
Offset()
属性

Sub Copy_Paste()
    Dim i As Long
    For i = 1 To 100
        Sheets("Sheet1").Range("A2,B2").Offset(i - 1).Copy Destination:=Sheets("Sheet2").Range("A1:B1").Offset((i - 1) * 4)
    Next
End Sub
而如果只需要粘贴值,则会更快:

Sub Copy_Paste_Values()
    Dim i As Long
    For i = 1 To 100
        Sheets("Sheet2").Range("A1:B1").Offset((i - 1) * 4).Value = Sheets("Sheet1").Range("A2,B2").Offset(i - 1).Value
    Next
End Sub

你知道你可以说“范围x值=范围y值”:

如果您可以使用
范围(单元格(1,1)、单元格(4,2))
定义范围,那么我很确定您可以在一行中完成所有您想要的操作
ws2.Range("A1:B4").Value = ws1.Range("A1:B4").Value