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