[英]VBA COPY AND PASTE IN A LOOP
我是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
而不是使用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$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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.