目次:
ビデオ: VBA開発&デバッグセミナーのご紹介 2024
VBAコードにいくつかの問題が発生する可能性がありますが、どのように問題が見つかりますか?場合によっては、VBAコードでデバッグが必要な場合もあります。
-
コードを調べる
-
コードのさまざまな場所にMsgBox関数を挿入する
-
デバッグを挿入する。 Printステートメント
-
Excelの組み込みデバッグツールを使用する
あなたのコードを調べる
おそらく最も簡単なデバッグ手法は、コードをよく見て、問題が見つかるかどうかを調べることです。もちろん、この方法には知識と経験が必要です。言い換えれば、あなたがしていることを知る必要があります。あなたが運が良ければ、エラーはすぐに飛び出し、あなたは額を叩いて、「ああ! 「額の痛みがなくなると、問題を解決することができます。
<! - 2 - >「あなたが運が良ければ、 "これは、あなたが8時間まっすぐあなたのプログラムで作業しているときに、しばしばエラーを発見するためです。それは2 aです。 m。あなたはカフェインと意志を持って走っています。そのような時には、バグを見つけることなく、コードを見ることができれば幸運です。したがって、単にあなたのコードを調べるだけでは、そのバグに含まれるすべてのバグを見つけて削除することができない場合は、驚かないでください。
<! - 9 - >MsgBox関数の使用
多くのプログラムでよく見られる問題は、1つ以上の変数が期待した値を取らないことです。そのような場合、コードの実行中に変数を監視することは、有用なデバッグ手法です。これを行う1つの方法は、一時的なMsgBox関数をルーチンに挿入することです。たとえば、CellCountという名前の変数がある場合は、次のステートメントを挿入できます。
MsgBox CellCount
ルーチンを実行すると、MsgBox関数はCellCountの値を表示します。
メッセージボックスに2つ以上の変数の値を表示すると便利です。次のステートメントはLoopIndex(1)とCellCount(72)の2つの変数の現在の値をスペースで区切って表示します。
MsgBox LoopIndex& ""&CellCount
2つの変数が連結演算子(&)と組み合わされ、それらの間に空白文字が挿入されていることに注意してください。それ以外の場合、メッセージボックスは2つの値をまとめて文字列を単一の値にします。空白文字の代わりに組み込み定数vbNewLineを使用することもできます。 vbNewLineは改行を挿入し、新しい行にテキストを表示します。次のステートメントは、3つの変数をそれぞれ別々の行に表示します。
メッセージボックスを使用して3つの変数の値を表示します。MsgBox LoopIndex&vbNewLine&CellCount&vbNewLine&MyVal
この手法は、変数の監視に限定されません。コードボックスの実行中に、メッセージボックスを使用してあらゆる種類の有用な情報を表示することができます。たとえば、コードが一連のシートをループする場合、次のステートメントはアクティブシートの名前とタイプを表示します。
MsgBox ActiveSheet。メッセージボックスに予期しないことが表示された場合はCtrl + Breakを押し、コードの実行が中断されたことを示すダイアログボックスが表示されたら、4つの選択肢があります:
続行ボタン。コードは実行を続けます。
-
終了ボタンをクリックします。実行が停止します。
-
[デバッグ]ボタンをクリックします。 VBEはデバッグモードになります。
-
[ヘルプ]ボタンをクリックします。 Ctrl + Breakを押したことを示すヘルプ画面が表示されます。言い換えれば、あまり役に立ちません。
+ を押すと、コードの実行が停止し、いくつかの選択肢が表示されます。 -
キーボードにブレークキーがない場合は、Ctrl + ScrollLockを押してみます。
コードをデバッグするときは、MsgBox関数を頻繁に使用してください。問題を特定して修正した後、それらを削除してください。
デバッグの挿入。 Print statements
コードでMsgBox関数を使用する代わりに、1つ以上の一時デバッグを挿入することができます。印刷ステートメント。これらのステートメントを使用して、イミディエイトウィンドウに1つまたは複数の変数の値を出力します。次の例は、
デバッグの3つの変数の値を表示します。 Print LoopIndex、CellCount、MyVal
変数はコンマで区切られています。 1つのデバッグで、好きなだけ多くの変数を表示することができます。 Printステートメント。
デバッグ。 Printは、そのウィンドウが隠れていても、イミディエイトウィンドウに出力を送ります。 VBEのイミディエイトウィンドウが表示されていない場合は、Ctrl + Gキー(または、表示→イミディエイトウィンドウを選択)を押します。イミディエイトウィンドウにいくつかの出力があります。
デバッグ。 Printステートメントは、イミディエイトウィンドウに出力を送信します。
MsgBoxとは異なり、Debug。 printステートメントはコードを停止させません。イミディエイトウィンドウを見て、何が起きているのかを確認する必要があります。
コードをデバッグしたら、すべてのデバッグを削除してください。印刷ステートメント。マイクロソフトのような大企業でさえ、時にはデバッグを削除することを忘れてしまいます印刷ステートメント。以前のバージョンのExcelでは、分析ツールパックアドインを開くたびに、イミディエイトウィンドウにいくつかの奇妙なメッセージが表示されます。この問題はExcel 2007で最終的に修正されました。VBAデバッガの使用
Excel設計者はバグの概念に精通しています。したがって、Excelには、VBAコードの問題を修正するのに役立つ一連のデバッグツールが含まれています。