我有一张带有随机数和循环的工作表。问题是:我需要刷新工作表并重新计算工作表中的所有数字。但是,随机数只应在循环中更改一次。现在,它们一直在变化,代码没有完成。有谁知道,我怎么能每次只刷新一次随机数呢?任何帮助都是非常感谢的。
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发布于 2016-08-29 09:00:50
也许我弄错了你的问题,但据我所知,我猜你有一张纸,里面有
=RAND()公式,您希望在每个For x-Loop上计算一次。For x-Loop中计算不止一次,这意味着在每个Do-Loop中,这是嵌套在For x-Loop中的。一个可能的解决方案可能是单独计算某些范围(或命名范围),其内容如下
Worksheets("Ex-Ante Te").Range("A" & x).Calculate或
Worksheets("Ex-Ante Te").Range("myNamedRange").Calculate
在你的Do-Loop里。
编辑:正如z32a7ul指出的,你不需要等待计算完成,所以你就不需要Loop While Not Application.CalculationState = xlDone了。
https://stackoverflow.com/questions/39201917
复制相似问题