ブレークポイントを設定すると、その設定した行で処理がブレーク(中断)します。このときに変数に設定されたデータ内容を確認したり、1行ずつ処理を実行(ステップ実行)したりすることで、処理が意図したとおりに行われているか確認することが可能になります。
以下ではサンプルマクロを使用して、ブレークポイントの設定と中断時の操作を解説していきます。
サンプルマクロ
次のサンプルは、九九を表示するという単純なマクロです。マクロを実行すると九九の段をInputBoxで受け付け、その段に応じた結果をダイアログで表示します。
Sub sample2_1()
'九九を入力された段ごとに表示するマクロ
Dim var As Variant
Dim i As Integer
Dim result As String
Dim str As String
'InputBoxから入力を受け付けます。
'正しい数値が入力されるか、キャンセルされるまで
'入力を受け付け直します。
Do
var = InputBox("表示する段(1~9)を入力してください。")
If StrPtr(var) = 0 Then
'キャンセルボタンが押下された場合は処理をキャンセルします。
MsgBox "処理をキャンセルしました。", vbExclamation
End 'ここで処理を終了します。
End If
Loop Until IsNumeric(var) And 0 < var And var < 10
'結果の見出しを編集
result = "◆◆◆" & var & "の段の結果◆◆◆" & vbLf
'繰り返し処理
For i = 1 To 9
'掛け算の結果(文字列)をFunctionプロシージャから受け取ります。
str = strMultiple(CInt(var), i)
'受け取った文字列を改行コードと一緒に後ろへ追加していきます。
result = result & vbLf & str
Next i
'結果を表示
MsgBox result, vbInformation
End Sub
Function strMultiple(x As Integer, y As Integer) As String
'掛け算の過程と結果を文字列にして返すプロシージャ
Dim z As Integer '各プロシージャ内で個別に変数を宣言できます。
'掛け算の結果を保存します。
z = x * y
'掛け算の過程と結果を文字列連結し、呼び出し元へ返します。
strMultiple = x & " × " & y & " = " & z
End Function
関連 InputBox Do … Loop For … Next MsgBox IsNumeric
サンプルマクロ実行結果
上記のサンプルマクロを実行するとInputBoxが表示されますので、適当に数値(ここでは3)を入力して OK ボタンを押下します。
すると、入力した値に応じた結果が表示されます。
処理のキャンセル
InputBoxが表示されたときに、InputBox右側の キャンセル 、または、右上 [ × ] ボタンを押下すると、次のようなダイアログを表示して処理をキャンセルします。
ブレークポイントの設定と中断時の操作
ここから本題です。上記のサンプルマクロを使用して、まずはブレークポイントの設定をしてみましょう。
ブレークポイントを設定するにはコードウィンドウ左端のインジケータバーをクリックします。ブレークポイントが設定された行は背景が茶色になるので、わかりやすいと思います。ブレークポイントは複数個所に設定できます。
ブレークポイントを解除したい場合はもう一度同じ場所をクリックしてください。
ブレークポイントが設定できたら、マクロを実行してみましょう。
処理がブレークポイントにさしかかると処理が中断します。 処理がブレークポイントを設定した箇所を通過しない場合、処理は中断しませんので注意してください。
処理が中断されたらを変数やプロパティをマウスでポイントしてみましょう。データが設定されていればその内容が表示されます。
継続 ボタンまたは F5 ボタンを押すと処理が継続され、処理が進んだ先にブレークポイントがあれば処理が中断します。このサンプルではFor文で処理がループしているため、再度中断します。
このようにブレークポイントを設定すると、実際は一瞬で終わってしまうような処理を途中で中断し、その時点での変数の値や、処理の実行状況を確認することができます。