【问题标题】:VBA COPY AND PASTE IN A LOOP循环中的 VBA 复制和粘贴
【发布时间】:2019-01-23 06:58:19
【问题描述】:

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

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

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

我找到了如何为一列执行此操作,但我找不到如何执行循环。 这是我为第一列编写的代码。 我想对所有 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

【问题讨论】:

  • 查看单元格而不是范围并使用与循环关联的列变量。

标签: vba excel loops copy paste


【解决方案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

【讨论】:

    【解决方案2】:

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

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

    此代码通过迭代引用一列的“单元格”第二个参数,将第 1 列和第 9 列之间的每一行从 Sheet1 复制到 Sheet2。

    并且代码可以这样做,因为“For”循环会不断重复,直到达到条件。在我的示例中,我将“c”设置为 1,并要求重复“For - Next”语句中的代码,直到 c 达到 9,默认情况下将变量加 1。

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 1970-01-01
      • 2019-05-20
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      相关资源
      最近更新 更多