私は乱数とループを持つシートを持っています。問題は次のとおりです。シートを更新して、シート内のすべての数値を再計算する必要があります。ただし、乱数はループ内で1回だけ変更する必要があります。今、彼らは常に変化し続けており、コードは終わらない。誰も知っている、どのようにループごとに一度だけ乱数を更新することができますか? 何か助けていただければ幸いです。VBA:乱数シートがループ内で変化し続ける
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
なぜDo .. Whileループがありますか? – arcadeprecinct
コードに乱数が表示されません。 Excelの関数 '= RAND()'または '= RANDBETWEEN()'を使用している場合は、シートが計算されるたびに変更されます。 VBAコードで乱数を作成する場合は、こちらをご覧ください:http://stackoverflow.com/questions/38891165/is-excel-vbas-rnd-really-this-bad/38893651#38893651 – Ralph
Worksheet.Calculateは同期的に呼び出されます(返されるまで残りのVBAコードは実行されません)。ループ内で待機する必要はありません。 – z32a7ul