VBA 循环复制和粘贴

VBA COPY AND PASTE IN A LOOP

我是 VBA 的新手,需要一些帮助来解决这个问题。

我有 8 列,每列有 9 行。我想复制每一列并将其粘贴到特定范围内的另一个 sheet。

如何编写以下语句? "Go to sheet2 and copy the first column and 2-9 rows and paste it to sheet1 in the range("C3:C10") 然后按 solver 做一些其他工作人员,当所有这些都完成后转到下一栏并再次执行相同操作"。

我找到了如何为一列执行此操作,但我找不到如何执行循环。 这是我为第一列编写的代码。 我想对所有 8 列都执行相同的操作。

Sub test1()

Worksheets("sheet 1").Range("c3:c10").Value = Worksheets("Sheet 2").Range("A2:A9").Value
Worksheets("Sheet 1").Range("C17").Value = "Y"
Worksheets("Sheet 1").Range("C32").Value = "Y"
        SolverOk SetCell:="$E", MaxMinVal:=3, ValueOf:=Range("C104").Value, 
            ByChange:="$C0", _
            Engine:=1, EngineDesc:="GRG Nonlinear"
        SolverSolve True

Worksheets("Sheet 3").Range("J2").Value = Worksheets("Sheet 1").Range("L24").Value

End Sub

我不使用 Range(""),而是使用 .Cells(row, col) 在列之间循环,例如:

Sub Iteration()

    For c = 1 To 9
        Sheets("Sheet1").Cells(1, c).EntireColumn.Copy
        Sheets("Sheet2").Cells(1, c).PasteSpecial
    Next

End Sub

此代码通过遍历 "Cells" 第二个参数,将第 1 列和第 9 列之间的每一行从 Sheet1 复制到 Sheet2,该参数引用了一个列。

而代码之所以能做到这一点,是因为 "For" 循环不断重复,直到达到条件。在我的示例中,我将 "c" 设置为 1,并要求重复 "For - Next" 语句中的代码,直到 c 达到 9,默认情况下将变量加 1。

你可以这样做。如果其他东西是可变的,也许可以使用 i 进行类似的调整。

Sub test1()

Dim i As Long

For i = 1 To 8
    Worksheets("sheet 1").Range("c3:c10").Value = Worksheets("Sheet 2").Range("A2:A9").Offset(, i - 1).Value
    Worksheets("Sheet 1").Range("C17").Value = "Y"
    Worksheets("Sheet 1").Range("C32").Value = "Y"
    SolverOk SetCell:="$E", MaxMinVal:=3, ValueOf:=Range("C104").Value, _
             ByChange:="$C0", Engine:=1, EngineDesc:="GRG Nonlinear"
    solverSolve True
    Worksheets("Sheet 3").Range("J2").Value = Worksheets("Sheet 1").Range("L24").Value
Next i

End Sub