人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: kubira711
●カテゴリ:コンピュータ
✍キーワード:Excel VBA ボタン マクロ 計算
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● FinnegansWake
●35ポイント

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

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

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

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

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

◎質問者からの返答

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

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

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

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


2 ● FinnegansWake
●35ポイント

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ