- ベストアンサー
EXCEL2010 マクロ実行時に起こるフリーズ
- マクロ実行中に途中でフリーズ(マウスのアイコンがぐるぐる回っている状態)になる現象が発生します。マウスをクリックするとマクロが再開されます。
- 一括処理を行う際に5回目の処理でフリーズが発生し、クリックすると再開します。VBAのF8で1行ずつ処理しても症状は出ません。
- タスクマネージャでPCの負荷を監視しましたが、特に負荷が掛かっているわけではありません。原因がわからず困っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
乗りかかった船・・と行きたいのですが、 残念ながら解決策をズバリ言い当てることはやはりできません。 補足を拝読する限り、 「全部で(例えば)10行の一つのマクロ処理を 5回(Do~LoopやFor~Nextで)繰り返している。」 その中で、 「5回目のある行(例えば4行目)で必ず一時停止する。」 というところまで切り分け出来ていると言う事なのかなぁ、 と読み取れるのですが、そんな感じでしょうか。 だとしたら、その行前後を見直すのが手っ取り早いのですが・・ > (1)他のPC(EXCEL2010)で試したが、やはり同じ事が起きる。 とのことですから、やはりプログラム内の何かが・・と言うのが濃厚とは思います。 気になるのは > この現象が出る前に、出るタイミングは同じ(やはり連続5回処理の5回目)で > フリーズではなくエラーが出ていました。 > その時の解決方法として、式を変えました。(もっとシンプルな式に。) > その後に5回目の処理で「グルグル・・・」と固まったままの現象が出ました。 の記述です。 この式のもとになる数字(文字列?)をどのように変数に渡しているか? ここに遅延が生じるような要因が無いか? という事を精査するのが近道のような気がします。 すいませんが、現時点で(私では)コレが目一杯かもしれません。 実際のコードとサンプルを提示いただければ、 私以外の識者がより良いアドバイスをくれるかもしれませんが・・
その他の回答 (1)
- tsubuyuki
- ベストアンサー率45% (699/1545)
何となくよく分からないのですが、切り分けしませんか。 その前に前提として。 ご存知の事と思いますが、マクロが動いている間、 > マウスのアイコンがぐるぐる回っている状態 なのは(Win7、デフォルトのカーソルだと)自然な動きです。 [応答無し]と表示されないうちはマクロが裏で動いています。 つまり「フリーズしていない」状態と思って間違いないはずですよ。 例えば ・必ず同じタイミング(同じ行)でフリーズ→プログラムの問題 ・フリーズするタイミングが毎回違う→PCの問題 だとか、 ・PC-1ではフリーズするが、PC-2ではフリーズしない→PC-1の問題 ・どのPCでも必ずフリーズする→プログラムの問題 だとか、 ・2003ではフリーズするが、2010ではフリーズしない→Excelのバージョンの問題 ・2003でも2010でもフリーズする→プログラムの問題 だとか。 画面更新を「ON」、処理対象セルが変わるたびに、 フォーカスを対象セルに持って行って、 どのタイミングでフリーズするのかを確認してみると 「負荷がかかる処理」が見えてくるかもしれませんね。 あとは、要所要所でブレイクポイントを入れて、 どのタイミングでフリーズするのかを確認するのも手段の一ですね。 正直、フリーズ・・と言うよりは、何かの拍子で極端に処理速度が落ちてしまっていたり、 何かのはずみでエクセルからフォーカスが外れてしまっていたり、 とかのような気もしますけどね・・
お礼
tsubuyukiさん 回答ありがとうございます。 質問の情報は少なかったですね。 これまでに試した事を列挙します。 (1)他のPC(EXCEL2010)で試したが、やはり同じ事が起きる。 (2)カーソルがぐるぐる回っている状態でクリックしたら、再開する。試しにESCキーを押したのですがデバッグせずそのままマクロが再開しました。 (3)同じ処理を連続5回やるわけで、4回目までは何事もなく流れます。5回ともデーターが違うだけで式や構文、変数の格納の仕方までは全く同じです。 (4)違うバージョンのEXCELでは試していません。(持っていないです。。。) (5)タイミングはいつも同じ。6回一括処理しようとしてもやはり「5回目」でグルグル・・・となります。 ちなみに1回の処理時間は大体4秒ぐらいです、フリーズすると何分待っても動いてくれません。 画面更新はONにしているのでマクロが動いているかどうかはわかります。 その5回目の時に画面がずっと固まったままなので「フリーズ」という表現をさせて頂きました。 ややこしいですが、もう一つ事実があります。 この現象が出る前に、出るタイミングは同じ(やはり連続5回処理の5回目)でフリーズではなくエラーが出ていました。 内容は格納しているはずの変数の中身が無いから計算できないという内容でした。 しかし、4回目までは同じ変数の格納をしており中身があるので式はおかしくないはずです。 またエラーが出た際に、手動で変数の格納をする式の手前からF8で進めていくと何事もなかったかのように進んでいきマクロは完結します。 その時の解決方法として、式を変えました。(もっとシンプルな式に。) その後に5回目の処理で「グルグル・・・」と固まったままの現象が出ました。 たしかに仰る通り何らかの要因で処理速度が遅くなったりしている気がします。 しかしそのトリガーが何かがさっぱりわからなくて・・・ アドバイスありがとうございます!
お礼
tsubuyukiさん いろいろお付き合いありがとうございます。 確かに察する通りです。 エラーで止まっている所を重点的にもう少し見直そうと思います。 私はマクロについてはまだまだ勉強中なので、構文を作成するにあたって非効率な構文になっていると思います。(自分で言うのもなんですが・・・) それで負荷が高くなってしまって止まるという事かも知れません。 ここは勉強して効率の良い構文にすれば負荷を軽くできて止まる事は無くなるかもしれませんね。 ここは一旦解決としてクローズします。 夜遅くまで回答頂きありがとうございました。