デバッグ(プログラムミスを探す)

デバッグとは、バグ(虫。プログラムの間違いのこと)をつぶすことです。わたし、デバッグは嫌いじゃないのですが、デバッグのためのテストが苦手です。どうも、人間がアバウトなようで、きっちりとあらゆる条件を想定して、テストするのがねえ。おっと脱線してしまいました。VBAのデバッグの手法を説明しておきます。

  1. 途中でプログラムを止める

    バグ(プログラムミス)などで、マクロが暴走(処理がどっかいって帰ってこない状態)する時には、一度Breakキー(Ctrl+Pauseキー)を試してみてください。Windows95が亡くなっているような状態でなければ、プログラムが途中で止まってデバッグウィンドウが開いた状態になります。このあとのプログラムの継続や終了は、次のマクロのステップ実行を参照してください。

  2. マクロのステップ実行

    マクロは1行ずつ実行することが出来ます。[ツール]-[マクロ...]で表示される「マクロの実行」ダイアログで、「ステップ」ボタンを押すとデバッグウィンドウが表示されます。

    次の行を実行したい場合は、F8キーまたはShift+F8を押すと1行ずつ、F5キーを押すと処理を継続します。F8ではサブプロシージャについても1行ずつ実行しますが、Shift+F8ではサブプロシージャは止まらずに連続実行します。

    途中で処理を終わりにしたい場合は、デバッグウィンドウを閉じるかメニューの[実行]-[終了]で終わらせます。

  3. イミディエイトペイン

    デバッグウィンドウのイミディエイトペインでは、値の参照や計算ができます。?は、その次に指定した変数や、オブジェクトのプロパティを表示するコマンドです。

    また、実行中に値を設定する事もできます。

  4. ブレークポイント

    マクロの実行を特定の行で止めたい場合には、ブレークポイントを設定します。

    ブレークポイントは、プログラムの停止したい行にカーソルを持っていって、[実行]-[ブレークポイントの設定と解除]で設定します。F9キーでも設定と解除が行えます。全てのブレークポイントを解除したい場合は、[実行]-[すべてのブレークポイントを解除]で解除できます。

    ブレークポイントを設定した行は、赤の反転になります。

    処理がブレークポイントにくるとマクロが停止して、デバッグウィンドウが表示されます。処理の継続は、ステップ実行と同様にF8、Shift+F8とF5です。

  5. ウォッチ式

    監視したい変数やオブジェクトのプロパティ、条件式を登録して、値が変わったときに処理を止めたり、デバッグウィンドウで値の状態を見たりすることができます。

    ウォッチ式の登録は、モジュールシートを選択した状態で[ツール]-[ウォッチ式の追加...]または[ツール]-[インスタントウォッチ...]で行います。インスタントウォッチは、追加したい式を選んだ状態で行うもので、細かい設定はできません。
    また、デバッグウィンドウのウォッチペインの右クリックでもウォッチ式の追加ができます。

    値のウォッチは、変数(またはプロパティ)を参照したい場合に設定します。値の状態は、デバッグウィンドウのウォッチペインで参照できます。
    式がTrueの時に中断は、論理値を持つ変数(プロパティ)や論理式を登録して、実行します。例えば、Selection.Interior.ColorIndex = 3を登録するとSelection.Interior.ColorIndex = 3になるとプログラムが中断します。
    式の内容が変化したときに中断は・・・・説明しなくてもわかりますね。

  6. デバッグプリント

    プログラム中にイミディエイトペインに値をプリントするDebug.Print文を埋め込むとデバッグウィンドウのイミディエイトペインで、デバッグプリントの値を見ることができます。

  7. ストップ文

    プログラムにストップ文を入れると処理がStop文のところにくるとでバックウィンドウを表示して停止します。

    処理の継続は、ステップ実行と同様にF8、Shift+F8とF5です。

    Sub Record1()
        With Selection.Interior
            .ColorIndex = 3
            Stop
            .Pattern = xlSolid
        End With
    End Sub
    



戻る