VBA复制和粘贴循环

时间:2018-08-16 10:32:47

标签: vba excel-vba loops copy paste

我是VBA的新手,在此问题上需要一些帮助。

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

如何编写以下语句? “转到sheet2并复制第一列和2-9行,然后将其粘贴到范围(“ C3:C10”)中的sheet1中,然后按求解器执行其他一些操作,完成所有这些操作后转到下一列并执行再次一样”。

我找到了如何对一列进行此操作,但是找不到循环。 这是我为第一列编写的代码。 我想对所有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$96", MaxMinVal:=3, ValueOf:=Range("C104").Value, 
            ByChange:="$C$100", _
            Engine:=1, EngineDesc:="GRG Nonlinear"
        SolverSolve True

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

End Sub

2 个答案:

答案 0 :(得分:0)

我不是使用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加到变量中。

答案 1 :(得分:0)

您可以这样做。如果其他事物是可变的,则可以使用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$96", MaxMinVal:=3, ValueOf:=Range("C104").Value, _
             ByChange:="$C$100", Engine:=1, EngineDesc:="GRG Nonlinear"
    solverSolve True
    Worksheets("Sheet 3").Range("J2").Value = Worksheets("Sheet 1").Range("L24").Value
Next i

End Sub