VBA宏执行顺序

时间:2017-07-15 21:10:01

标签: vba excel-vba excel

我在excel工作簿上运行以下宏

Public Sub Iterate()

Dim i As Long

For i = 1 To 1
    With Worksheets("Iterations")


    Worksheets("Calculator").Range("AB6:AB16","AS8").Copy
    .Cells(1, i).PasteSpecial Paste:=xlPasteValues


    Application.CutCopyMode = False
    End With
Next

End Sub

enter image description here

在AB列中随机插入的内容,然后调用来自" AG:AT"的所有列的计算。

现在,当我运行宏时,会生成随机数,并在生成它们之后---我希望宏将AB和AS的输出复制到另一个工作表"迭代"它做的。

修改2

问题是我只需要" AB6:AB16"和" AS8"要在同一个实例中复制,而不是将其拆分为两行代码。

当我现在运行宏时,它会将所有列复制到" AS8"而不是复制" AB6:AB16"而且只是细胞" AS8"

1 个答案:

答案 0 :(得分:1)

(至少)有两种方法可以解决您的问题:

  1. 在执行两个副本(输入数据和输出数据)时关闭自动计算,以便复制输入数据不会触发输入数据的更改,从而导致在复制之前更改输出数据,或

  2. 在完成两份副本时,将输入数据和输出数据都存储在内存中。

  3. 由于#2是我的首选方式,我将向您展示一些代码:

    Public Sub Iterate()
        Dim i As Long
        Dim inputValues As Variant
        Dim outputValue As Variant
    
        For i = 1 To 1000
            With Worksheets("Iterations")
                inputValues = Worksheets("Calculator").Range("AB6:AB16").Value
                outputValue = Worksheets("Calculator").Range("AS8").Value
                .Range(.Cells(1, i), .Cells(11, i)).Value = inputValues
                .Cells(12, i).Value = outputValue
            End With
        Next
    End Sub