いくつかの反復を実行する Excel VBA コードがあります。各反復は基本的に配列を計算し、目標に到達するまで、通常は約 8 または 6 回試行します。問題は、これを数百回実行する必要があり、システムが遅すぎることです。
最初に、ターゲットに到達するまでにかかる時間を計りました。通常は約 16 ミリ秒です。次に、各ループのタイミングを計ったところ、16ms のタイムを除いて、通常は 0ms (非常に高速) であることがわかりました。その後、何も変更せずにこれを数回繰り返し (CTRL+ALT+F9)、16ms かかるループはさまざまです (2 回目、5 回目など)。
ところで、時々それは15ミリ秒です...
これがマルチタスク システムであることは理解していますが、これをより一貫して実行する方法はありますか?
参考までに、これはタイミングを行うコードです。
While (Abs(Y - Me.Model.Tjref) > 0.5) And (Count < 100)
Count = Count + 1
t(Count) = GetTickCount
If Y > x Then ' left condition
X1 = x
Y1 = Y
Else ' right condition
X2 = x
Y2 = Y
End If
x = (X1 + X2) / 2
Me.Model.Tjref = x
Y = Me.Model.Tjmax
t(Count) = GetTickCount - t(Count)
t1 = t1 + t(Count)
Wend
MsgBox t(1) & " " & t(2) & " " & t(3) & " " & t(4) & " " & t(5) & " " & t(6) & " " & t(7) & " " & t(8) & " " & t(9) & " " & t(10) & " tot: " & t1
ただし、実際の計算は非常に長く、いくつかのクラスに分かれています...
16ms は気にしませんが、この 16ms を何度も実行すると、シートを再計算するのに 10 秒かかります... 助けてくれてありがとう!!!!!!