- 締切済み
長時間の計算のときだけバグになる?[ExcelVBA]
ExcelVBAでシミュレーションの計算をさせています。 for nextでループさせながら12時間くらい計算→ブック保存→PCシャットダウン、という流れです。 仕事場でプログラムを走らせてから帰宅し、翌朝チェックしてみるとなぜか計算結果が保存されていません(ちゃんとマクロは走り始めています)。 アルゴリズムは変えないまま、step数を大きくし、短い時間で計算が終わるようにしてテストしてみると上手く保存されています。ところが、これだと計算が粗いので仕事になりません。 このような状況はなぜ起きるのでしょうか(プログラムが原因?ハードウェアが原因?)? また、防ぐにはどうしたら良いでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bin-chan
- ベストアンサー率33% (1403/4213)
> →ブック保存→PCシャットダウン、という流れです。 どうやってPCシャットダウンされています? 「ブック保存」の命令を発行したはいいが、保存完了するよりも前に「PCシャットダウン」してしまうとか? > for ~ next ですから途中にif文をはさみ、何千回かごとに一回「上書き保存」をさせてみては? とは if <ループカウンタ変数> mod 1000 = 0 then 上書き保存 end if です。回数(上記では1000)は状況に合わせ適宜変更してください。 念のため。
- bin-chan
- ベストアンサー率33% (1403/4213)
> for nextでループさせながら12時間くらい計算→ブック保存→PCシャットダウン、という流れです。 どこまで実行されていますか? for ~ next ですから途中にif文をはさみ、何千回かごとに一回「上書き保存」をさせてみては? > ちゃんとマクロは走り始めています 起動もマクロなんですか?手動で起動ですか? まさか、中断・終了判定に「時」を用いていて、なんてことは? 短い時間ならともかく、24時以上を用いる場合の'時'は 'h'ではなく'[h]'を用いないと日付繰り上がりで0からになりますので・・。
補足
コメントありがとうございます。 >どこまで実行されていますか? step数が大きい場合は、全て実行されます。 また、翌朝チェックしてみると、計算結果が一切保存されていません。計算が始まるのは目視確認しているので間違いありません。 >起動もマクロなんですか? PC起動もマクロ実行開始もマクロです。 >まさか、中断・終了判定に「時」を用いていて、なんてことは? for nextのループが終了した時点で、保存→終了としています。 >>for ~ next ですから途中にif文をはさみ、何千回かごとに一回「上書き保存」をさせてみては? こちら↑大変参考になりました!次からやってみます。