EXCEL VBAのマクロで1週間ぐらいかかる計算

を作ったとして、「今日はこれくらいでやめておこう」と思って、ボタンを押すと中断するようなもの
を作りたいのですが、実行途中で割り込む処理
というのは作れますか?可能ならばどうやって実現すればよいのか教えて下さい。「不可能」という答えでも理由があれば結構です。

回答の条件
  • 1人2回まで
  • 登録:2006/04/01 19:22:38
  • 終了:2006/04/02 11:17:39

回答(2件)

id:FinnegansWake No.1

FinnegansWake回答回数4ベストアンサー獲得回数02006/04/01 22:44:26

ポイント35pt

知る限りではVBAを途中でとめるにはEscキーを叩くのが手っ取り早いと思います。そのとき、変数の中身等は失われますが、ワークシートに設定した値などはそのまま残るはずです。

ですので、以下を設計時に考慮すればよいかと思います。

1. 計算結果は随時セルに入れておく。

2. いつEscキーを押されてもいいように、どこまで計算したかを競るに入れ、常に更新するようにする。

3. 途中からスタートするサブルーチンも別途作り、そのサブルーチンは前出の「どこまで計算したか」を記録してあるセルを参照して計算をすすめる。

id:kubira711

Ctr+Break はダサいし、やはりEscなら

それなりにスマートですね。

もっとスマート?にボタンクリックで止める

とかはやはり無理でしょうかね。

2006/04/02 00:28:20
id:FinnegansWake No.2

FinnegansWake回答回数4ベストアンサー獲得回数02006/04/02 01:03:58

ポイント35pt

ボタンで止めたいとなると、カスタムダイアログですかね。

カスタムダイアログ上にループするサブルーチンを作り、そのサブルーチンは常にボタンが押されたかどうかを見て、押されてなかったら計算処理をコールする、計算処理のサブルーチンからの戻り値が「未終了」だったら次のループ、と回せばよいのではないでしょうか。

ただ、どれぐらい早く中断できるかが問題だと、計算処理サブルーチンがどれぐらいの時間で処理をするかに依存することになります。あまり計算処理を細かく区切ると、1週間で終わるものが2週間かかったということになりかねません。そこがけっこうキモかと思います。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません