ワードマクロの動作がおかしいとき、VBEを使えばテストすることができます。
プログラムの動作がおかしな点をプログラムのバグ(虫)といい、バグを修正する作業のことをデバッグといいます。
この記事では、VBEを使って、効率よくデバッグする方法を紹介します。
VBEでVBAのデバッグをする方法
ローカルウィンドウを表示
ローカルウィンドウを使って、ブレークポイントを使ってプロシージャの途中で動作を止めたとき、そのプロシージャで使われている変数の中身を確認するすることができます。
表示されてない場合、「表示」メニューの「ローカルウィンドウ」をクリックして表示することができます。
ブレークポイントを設定
ブレークポイントとは、プログラムを実行したとき一旦実行を一時停止して、プログラムの実行状態を詳しく調べるための機能です。
設定の仕方ですが、2通りあります。
ブレークポイント設定の仕方1
設定したいステートメントにカーソルを合わせて、「ブレークポイントの設定/解除」アイコンをクリックすると、ブレークポイントを設定、解除が切り替わります。
ブレークポイント設定の仕方2
コードウィンドウの左側の灰色の部分をクリックすると、下図のように茶色の●マークが付きます。もう1回クリックすると、ブレークポイントが解除されます。
実行してブレークポイントで一旦停止
この状態で、「Sub/ユーザーフォームの実行」アイコンをクリックして見ましょう。
ブレークポイントまで実行がすすんで、一旦停止します。
ブレークポイントで一旦停止中の操作
変数確認
ローカルウィンドウには、実行中のプロシージャの変数の値(内容)が表示されています。
下図では、str_test には、前の行で代入された「ワードのマクロで、」が代入されており、i_row は 0 であることが分かります。
まだ、i_row = 1 の代入文が実行されてないということですね。
実行の再開
ここで、再度「Sub/ユーザーフォームの実行」アイコンを押すと、実行が再開され、次のブレークポイントがあればそこまで実行されます。ブレークポイントが他になければ、最後まで実行されます。
また、アイコン列右側に、「ステップイン」、「ステップオーバー」、「ステップアウト」の3つのアイコンが有り、途中まで実行を進めることができます。
- ステップイン
1行だけ実行を進めます。もしステートメントがプロシージャ呼び出しの場合、そのプロシージャの中の1行だけ実行します。 - ステップオーバー
1行だけ実行を進めます。もしステートメントがプロシージャ呼び出しの場合、そのプロシージャは全て実行してしまいます。 - ステップアウト
プロシージャを全て実行し呼び出し元まで処理が戻ります。
ここでは、ステップインをクリックして、1行処理を進めてみます。
1行実行すると、i_row = 1 が実行され、ローカルウィンドウでi_row の値が、1に変化していることが分かりますね。
こんな感じで、コードウィンドウとローカルウィンドウを使うだけでも、かなり効率よくデバッグできるようになります。
他にも、イミディエイトウィンドウ、ウォッチウィンドウを使った方法も別記事で紹介しますので、合わせて読んでみてください。
コメント