外部のシミュレーション ツールから値を取得し、結果を Excel に出力するマクロを作成しました。シミュレーション ツールは 30 秒ごとに値を返し、数日間実行されます。したがって、ループで 30 秒間 VB に遅延を与えました。ランニングのために一晩放置します。翌朝、特定の行の後に結果が更新されていないことがわかりました。しかし、VBA エディターのヘッダーには、マクロが実行中であり、外部シミュレーション ツールも実行中であることが示されています。Excel で最後に更新された行は、毎回一定ではありません。VBA が Excel での結果の出力を停止するのはなぜですか? どんな助けでも大歓迎です。
サンプルコード:
For l = 3 To lastrow1_mul + 2
Module4.Wait 30
nv = send_data.Call
Sheets(SecondSheetName).Range(SecondSheetCol_9 & l) = Hex(nv)
dv = DT.Call
If dv = 44 Then
Sheets(SecondSheetName).Range(SecondSheetCol_10 & l) = "A"
ElseIf dv = 54 Then
Sheets(SecondSheetName).Range(SecondSheetCol_10 & l) = "B"
Else
Sheets(SecondSheetName).Range(SecondSheetCol_10 & l) = "C"
End If
Next l
モジュール 4:
Function Wait(PauseTime As Single)
Dim StartTime As Single
StartTime = Timer
While Timer < StartTime + PauseTime
DoEvents
Wend
End Function
Send_data と DT は外部シミュレーション ツールの関数です。変数 lastrow1_mul の値は 7000 付近で更新されますが、Excel の行は 500 付近で印刷を停止します (常に一定ではありません)。