VBAテクニック

マクロが動かない時の原因と対処法|実行できない理由はこれだ!

更新日:


今回は「マクロ」が動かない原因についてお話します。

VBEにおける主な2つの「デバッグ」の仕方

VBAが動かない原因を探すデバッグには、2種類の方法があります。

マクロを1行ずつ実行するステップインは、結果を直接確認できるのでコードを間違えている箇所を特定しやすいです。

任意の位置までプログラムを実行させるブレークポイントは、1行ずつコードを確認する必要がありません。

このようにデバッグの方法はそれぞれでメリットが違うので、状況に応じて使い分ければ短時間でコードのミスを発見し、速やかに修正することができます。

Excelのマクロにおいて、VBAのプログラムが思った通りに動かないことは案外ありがちです。

そんな時にはデバッグが有効で、ステップインとブレークポイントの2つを使いこなせば、原因の特定が行いやすくなります。

デバッグはVBAが動かない原因を探る為の機能ですから、覚えておいて損はないといえるでしょう。

また、イミディエイトウィンドウとウォッチウィンドウを表示しておけば、デバッグの効率が更にアップします。

前者は変数の中身をチェックするのに便利で、テストコードの確認などに役立ちます。

後者は、コードから監視したい変数をドラッグすることによって、実行中のマクロにおける変数の変化が監視できます。

マクロを1行ずつ実行させる「ステップイン」

ステップインを使うなら、ExcelとVBAの画面を並べて表示させましょう。

最初に実行するマクロにカーソルを合わせてF8キーを押すと1行ずつ実行されますから、バグがないか確認して下さい。

もし思い通りに動かないようなら、問題の箇所を修正しもう一度正確に動作するか確かめましょう。

ステップインはF8キーでもできますが、デバッグからステップインでも可能です。

また中断するときには、実行からリセットを押すと中止できます。

ステップインはデバッグ機能の一つで、マクロを1行ずつ実行させることが可能です。

コードの実行中にエラーが出たり、最後まで動作しても思った通りの結果にならないなど、抱えている問題を確認するのが大変です。

しかし、ステップインなら1行単位の実行なので、変数の中身を確認しながらコードがチェックできます。

地道な作業は必要ですが、コードを眺めたり動作を頭の中でシミュレーションするよりは、遥かに現実的で効率の良いデバッグ作業が実現します。

任意の位置まで実行する「ブレークポイント」の設定

ブレークポイントでバグを探すなら、最初に設定をしましょう。

設定したい行の頭にカーソルを動かしクリックすると、黒丸が追加されます。

そして実行にあるSUB/ユーザーフォームの実行を押すと、マクロがブレークポイントまで実行されます。

実行して問題がなければ別の範囲を再設定して、バグが見つかれば修正して下さい。

設定したブレークポイントを消したいときは、黒丸をクリックすれば指定した範囲を解除することができます。

ブレークポイントは、ここまでコードを実行するという印のようなものです。

このブレークポイントを設定すると、指定の場所でプログラムが止まるので、正常に動作する範囲を確認しながらデバッグ作業が進められます。

ブレークポイントは複数個の設定が可能ですし、中断したところから再開するのも容易です。

これで中断、再開と繰り返して行くことで、動かない原因を徐々に絞り込んだり特定に近づけます。

正常に動作すると分かっている部分は普通に実行する、こう考えて使うこともできるので、活用次第で効率的に原因特定を進められるでしょう。

デバッグ時の注意点

VBAが動かない原因を探すデバッグを行うときの注意点は、カーソルを実行するマクロに合わせることです。

目的のマクロに合わせていないといつまでも実行できませんし、別の箇所に合わせていると無関係なマクロが動作する可能性もあります。

このようなことが起きると、原因がわからずに混乱するかもしれません。

ですが動作しない原因は簡単なことなので、デバッグを始めるときにはカーソルの位置を確かめましょう。

ステップインでもブレークポイントでも、カーソルの位置には注意です。

ステップインの操作もブレークポイントの設定も、実行するマクロのコード内にカーソルを移動させておくことが注意点です。

更に、無限にループするコードはデバッグでも中断できない場合があるので、実行する前に確認を済ませるのが良いでしょう。

バグの原因を特定できたと思っても、その範囲を一度に書き換えたりはせず、必ず編集前のコードを残しておき、小さな範囲で修正してから再実行するのが無難です。

コードを書き換える前の方がマシだった、という状況もデバッグでは発生しがちなので、元に戻せるようにしてけばやり直しができて安心です。

動かない原因=「バグ」のないプログラムを作る方法

バグが発生しても、デバッグで原因を特定し修正すれば問題ありません。

しかしデバッグや修正に時間をとられると効率が落ちるので、最初からバグのないプログラムを作ることも大切です。

キー入力をするときには確実性を重視し、一つ一つ丁寧に入力しましょう。

また面倒だと感じたり時間がないと、処理を省略してしまうこともあります。

バグがない完璧なプログラムを作ることはできませんが、丁寧な仕事をすれば減らすことは可能です。

動かない原因、バグのないプログラムの作成方法は、プログラマーなら誰もが求めているものです。

基本的には、用途が分かるように変数の名前をつけたり、小範囲毎にプログラムをテストをして確実に動くようにすることです。

似たような名前の変数は、それが複数あると混同してしまったり、用途の分かりにくさという混乱を招きバグの温床となります。

ところが、少しずつ機能を加えたり小まめなデバッグを心掛けると、プログラムが巨大になる前にバグが見つかります。

大きなプログラムに潜むバグを探すのは、余分な手間や労力を必要とするので、未然に防いだり早めに発見して修正した方が、結果としてバグが生まれにくく楽です。

 

 

 

 

 

ブログを書いている講師紹介(初心者の気持ちが日本で唯一わかるパソコンが苦手だった講師)

森分 然(もりわけ しかり)ミスターしかっち

パソコンが大の苦手だったところから、パソコンを覚えてきた経験を元にパソコン教室を開講。自身の経験から「専門用語を使わない」「例え話」「初心者の気持ちが唯一わかる講師」で人気。全国対応の遠隔レッスンで多くの問い合わせが殺到。初心者向けに少しでも役に立ちたいと、馴染み易いように始めた動画「ミスターしかっち式動画」が大人気。小学生が見てもわかるような動画を無料で掲載中。「ミスターしかっち」で検索!

おすすめ記事

-VBAテクニック

Copyright© パソコン教室キュリオステーション , 2020 All Rights Reserved Powered by AFFINGER5.