我是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
答案 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