サイトについて      連絡先   検索

VBA デバッグの仕方

はじめに

Excel VBA マクロのデバッグの仕方を紹介します。

デバッグとは、プログラムがどのように実行されているか調査することです。

実行中の変数の値や処理の流れなどが意図したとおりになっているか、何度もデバッグを繰り返すのがプログラミングです。

  • 目次
    • デバッグする
    • イミディエイト ウィンドウ
    • ウォッチ ウィンドウ

デバッグする

デバッグをするためには、ブレークポイントを設定します。設定した場所で処理が中断し、その時点のプログラムの状態を確認できます。これを使って意図しない動作になっていないか調べられます。

ブレークポイントを設定するコードの [左側の部分] をクリックします。

16

ブレークポイントが設定されると、その行が赤くなります。ブレークポイントはいくつでも設定でき、もう一度クリックすると解除できます。

17

コードを実行すると、ブレークポイントを設定した行で処理が止まります。黄色くなっている行が、次に実行されるコードです。

18

変数の上にマウスカーソルを合わせると、その時点の変数の値を確認できます。

19

処理を再開するには [デバッグ] から [ステップ イン] などをクリックします。ショートカットキーを使うと便利です。

20
ブレークポイントを設定しなくても F8 キーを入力して実行すると、最初のコードから 1 行ずつステップ インして処理の流れを確認できます。

F5キーを入力するか [Sub/ユーザーフォームの実行] ボタンをクリックして、次のブレークポイントまたは最後まで処理を進められます。

処理を移動する

次に実行する処理を、関数の中で好きな行に移動できます。

[黄色い矢印] を実行したい行までドラッグします。上下の好きな行に移動できます。

26

その行に処理が移動し、そこから再開できます。

27

上の行に移動したからといって、プログラムの状態が戻るわけではありません。次に処理するコードが上の行になっただけです。

このようにブレークポイントで処理を中断して、変数の値を確認したり、IF 文などの分岐が意図したとおりになっているかステップインしたり、確認しながら処理を進めていくのがデバッグです。

イミディエイト ウィンドウ

「イミディエイト ウィンドウ」から変数の取得や設定ができます。コードの実行もできます。

[表示] から [イミディエイト ウィンドウ] をクリックします。

21

「イミディエイト ウィンドウ」が表示されます。

値を確認

?変数名の後にEnterキーを入力します。

22

処理が中断している時点の変数の値が出力されます。

23

?関数名の後にEnterキーを入力します。Function 関数の戻り値が出力されます。

28

コードにDebug.Print(変数名)のように入力すると、その時点の変数の値を出力できます。


Sub 実行()
    Dim 変数 As Integer
    変数 = 10
    Debug.Print(変数)
    変数 = 20
    Debug.Print(変数)
    変数 = 30
    Debug.Print(変数)
End Sub
24
Tipsfound ではサンプルコードの多くに Debug.Print を使用しています。これで動作確認しやすくなっていると思います。

値を代入

変数名=値の後にEnterキーを入力します。

25

その変数に値が代入されます。

この機能は上記の「処理を移動する」で使うと便利です。イミディエイト ウィンドウで変数の値を変えながら、処理を戻して動きを確認できるため、何度もプログラムを実行する手間が省けます。

関数を実行

関数名の後にEnterキーを入力します。標準モジュールに Public で宣言されているか VBA の関数のみ実行できます。Sheet1 などのクラスの関数は実行できません。

プログラムを実行していなくても、その関数を実行できるので動作確認に便利です。

ウォッチ ウィンドウ

「ウォッチ ウィンドウ」から変数の値を常に監視できます。

[表示] から [ウォッチ ウィンドウ] をクリックします。

29

「ウォッチ ウィンドウ」が表示されます。

監視したい [変数] をダブルクリックして [ウォッチ ウィンドウ] にドラッグします。

30

処理を中断するとその時点の値が確認できます。ステップ インで 1 行ずつ処理を進めていくと、変数の値が変更されるたび、ウォッチ ウィンドウにも反映されます。

31

これで、変数の値を確認するのが楽になります。

「ウォッチ ウィンドウ」から変数を削除するには、その [変数] を選択した状態でDeleteキーを入力します。

32
  • 目次
    • デバッグする
    • イミディエイト ウィンドウ
    • ウォッチ ウィンドウ