VBA:随机数字表在循环中不断变化

时间:2016-08-29 08:40:22

标签: excel vba random refresh

我有一张包含随机数字和循环的表格。问题是:我需要刷新工作表并重新计算工作表中的所有数字。但是,随机数只应在循环中改变一次。现在,他们一直在不断变化,代码没有完成。有谁知道,我怎么可以每循环刷新一次随机数? 非常感谢任何帮助。

  Sub MonteCarlo()
  Application.ScreenUpdating = False
   Dim x As Integer

Application.Calculation = xlManual

        For x = 1 To 1
        Do
        Worksheets("Ex-Ante TE").Calculate

        DoEvents
        Loop While Not Application.CalculationState = xlDone

     Worksheets("Monte Carlo").Range("A" & x).Value = Worksheets("Ex-Ante Te").Range("B2").Value
    Worksheets("Monte Carlo").Range("B" & x).Value = Worksheets("Ex-Ante Te").Range("B3").Value
    Worksheets("Monte Carlo").Range("C" & x).Value = Worksheets("Ex-Ante Te").Range("B4").Value

        Next

Application.ScreenUpdating = True
  Application.Calculation = xlAutomatic

End Sub

1 个答案:

答案 0 :(得分:0)

也许我误解了你的问题,但从我收集的内容中我猜你有一张包含

的表格
  • =RAND()个公式,您想要计算一次For x - 循环。
  • 其他公式,您希望每For x计算多次 - 循环,意味着每个Do - 循环,它嵌套在For x - 循环内。

一种可能的解决方案可能是用

之类的方法分别计算某些范围(或命名范围)

Worksheets("Ex-Ante Te").Range("A" & x).Calculate

Worksheets("Ex-Ante Te").Range("myNamedRange").Calculate

Do - 循环中。

编辑:正如z32a7ul指出的那样,您没有等待计算完成,因此您不需要Loop While Not Application.CalculationState = xlDone