dポイントプレゼントキャンペーン実施中!

エクセルで、VBAプログラム実行を中断モードにしその後停止させるのは、エディタ画面ではできるのですが、通常画面からでも可能ですか。

A 回答 (2件)

「リセット」とはVBAの実行を停止し、制御をExcel等に返すという


意味です。プログラム制御権(タイムスライス)を放棄した以上、
「プログラムで云々」はできません。

Stopの代わりに、DoEventsを実行する無限ループ(終了条件は別)に
より他のイベントを処理することはできます。

但し、VBAとしては「リセット」ではないので、大域変数の内容は
以前のままです。また、DoEvents自体は何もしませんが、CPUは使用
するので、大変に効率の悪い(CPU負荷が高い)ステートメントで、
使用は控えるべきです。更に、VBAはマルチスレッドはできないため、
多重実行により、動作が不安定になる可能性もあります。

上記の危険性を認識し、多重時実行の制御、DoEventsのインターバルの
取り方に注意すれば何とか希望のものはできるかも知れません。
    • good
    • 2

Stop というステートメントで中断します。


再開は手動です。
    • good
    • 1
この回答へのお礼

早速の回答、ありがとう御座います。
ただ、小生の質問の内容は少し違います。「stop」ステートメントでプログラム実行を中断した状態から、プログラムを最初から再実行させたい場合、エディタ画面の「リセット」ボタンでプログラムを一旦リセットし、その後プログラムを再実行させると思います。このエディタ画面の「リセット」ボタンクリックでなく通常の画面でプログラムをリセットさせたいのですが、何か方法はありますか。
小生の質問の仕方が悪くて申し訳ありませんが、宜しくお願いします。

お礼日時:2009/08/03 22:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!