• ベストアンサー

エクセルのマクロが動いているか知る方法

お世話になります。Windows7、Excel2010、2013です。 エクセルのマクロが現在動いているか止まっているか、エクセルブック上で知る方法があるでしょうか? 例えば、なにかの表示がチラチラ動いていたらマクロも動いているとか、マクロが動いていたらなにかが点滅とか、そういった表示です。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.2

その場合、「止まっている」の定義が難しくなります。 Excel-VBAはインタプリタ言語で、一つの命令をこなして「次」という処理を 行う関係上、「ある処理が終了せず延々と動作している場合」、次の処理を 動かすことができない・・・という仕様上の問題があります。 なので、ある命令が、ネットなどからの反応待ちで「動き続けている」だけの 場合、次の命令は、いつまでたっても動くことができない=止まっているよう に見えるんです。 逆に言えば、「止まっているかどうか」は、「前の命令が終了していないか」と 言うチェックしかできず、それは「前の命令が終了しないとそのチェックすら 動かない」という問題があるんです。 ・・・すなわち「止まっているかどうかのチェックはできない」んですね。 なので、発想をひっくり返して、「止まりそうな場所」を先に同定しておき、その 直前と直後におのおの、「直前まで何時何分何秒に動きました」「直後は何時 何分何秒に動きました」とセル上に表示させ、それを目視で「いつまでも更新 されないな・・・」とチェックするしかない、というコトになると思います。

OTTO-TTO
質問者

補足

ありがとうございます。そういう理由があったんですね。 なるほど「止まっている」を定義するのが難しそうです。 止まっているかどうかのチェックを繰り返して重くなるのも問題ですし、 なにか別の方法を考えないとならないようです。

その他の回答 (2)

  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.3

>止まっているかどうかのチェックを繰り返して重くなるのも問題ですし、 プログラムが正常なら、「止まる」場所は「ブック外とのデータのやり取りを している部分」以外考えにくいです。プログラム上そういう場所は多くない (たぶん数か所から十数か所じゃないかと)と思うので、一度ソースコードを 確認してみることをお勧めします。 数万行のレコードを処理するときに、進行状況をメッセージに出している 経験から、場所が同定できれば、処理もそれほど重くなることはないと 思いますよ。

OTTO-TTO
質問者

補足

ありがとうございます。その件もリクエストしてみようと思います。

  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.1

単純に、開始直後に「MSGBOX」などを入れ、終了直前に「MSGBOX」 で、メッセージを出せば、その間はマクロが動いているってことになるん ですけど、そういう話じゃないんですよね? 無限ループをやってるか どうか知りたいとか、そういう話なんでしょ? だとすると、プログラム中に実行状況を吐き出すコードを入れておくしか 方法がないと思うんですけどね。 例えばループが1000回回るFor~Nextがあったとするなら For I=1 TO 1000 IF I/100=INT(I/100) then MSGBOX Cstr(I)&"回ループが回りました" : : Next こんな感じで何か命令を入れておくという方法ですね。 つか、そういう問題が出ないように[F8]のステップ実行があると思うんですが。

OTTO-TTO
質問者

補足

ありがとうございます。作ってもらっている立場なので質問者がVBAをわかっていません。申し訳ありません。制作者にどのようにリクエストを出したらよいかお聞きできたら。 Excelの起動時から一日中動いているマクロです。ただ、なにかの障害で時々止まっていることがあります。 セルを移動する「表示」によってマクロが動いていることを表すセルを作りましたが、「いま」動いているのかどうかがわかりません。 動いていなかったら復帰させることはできるのですが、いま動いているのか止まっているのか知る方法がないだろうか、と。いち早く復帰させたいということです。 何か警告音でも出てくれたらいいのですが、それは以前質問したところ、止まっているマクロに警告音を出させるのは無理、とのことでした。 そうすると、常時動いているものが動いていなかったら=止まっていると判断するしかなさそうです。その方法があるかどうかという質問です。何かアイディアがございましたらお願いいたします。

関連するQ&A

専門家に質問してみよう