サンプルプログラムを使ってデバッグを行う方法を紹介します。
サンプルプログラム

Option Explicit
Sub DebugSample()
Dim users As Variant
users = Range("A2:A11").Value
Dim l As Long
For l = 1 To UBound(users)
DisplayGreeting (users(l, 1))
Next l
End Sub
Sub DisplayGreeting(ByVal user As String)
MsgBox ("Hello, " & user & " !")
End Sub
セルから名前を取得し、”Hello, [名前] !” と表示するプログラムです
1行目:変数の宣言を強制
3行目:DebugSampleという名前で関数を宣言
4行目:usersという名前でバリアント(Variant)の変数を用意
6行目:usersにA2からA11までのセルの値を格納
8行目:lという名前で数値(Long)のループ用変数を用意
9行目:For文の始まり
(lは1から始まり、usersの長さ分ループを行う)
10行目:DisplayGreeting関数を呼び出す
(引数としてusersのl番目の値を渡す)
11行目:lのカウントアップ
12行目:関数の終わり
14行目:DisplayGreetingという名前で関数を宣言
(引数として文字列(String)の値を受け取り、変数userに格納)
15行目:MsgBoxの表示
16行目:関数の終わり
デバッグの始め方
- 「▶」を選択します
- 実行したいマクロを選択し、「ステップイン」を選択します
- 現在実行中の行が黄色背景で表示され、デバッグの始まりです
デバッグの進め方
- デバッグ中の状態から「F8」もしくは「Shift + F8」を押すことで
1行分処理を進めることができます
↓[F8]
※4行目は変数宣言のため飛ばされます - 10行目のDisplayGreetingのところまで処理を進めてください
ここで「F8」を押すことで、関数の中にまで進むことができます
↓[F8] - 関数のコードをすべて実行するか、
「Ctrl + Shift + F8」を押すことで関数内のデバッグから抜けることができます
↓「Ctrl + Shift + F8」 - 「F8」を何度か押して、再度DisplayGreetingの行まで進めてください。
先ほどはこの状態で「F8」を押しましたが、次は「Shift + F8」を押してください
↓「Shift + F8」
「Shift + F8」を押すことで、関数内のデバッグを飛ばすことができました。
ここで出てきた「F8」「Shift + F8」がデバッグを進める基本的な操作になります。
また、これまでの操作には名前がついています
F8:ステップイン
Shift + F8:ステップオーバー
Ctrl + Shift + F8:ステップアウト
他のエディターなどでも、ショートカットは違えど名前を同じだと思うので
参考に覚えておくとよいでしょう
デバッグの進め方(ブレークポイント)
今回は処理が少ないのでいいですが、
確認したい行まで「F8」で処理を進めるのは大変ですよね
そういう時はブレークポイントを張ってみましょう
- コードの左側の列をクリックしてブレークポイントを張ることができます
(以下画像の赤い丸があるところ) - この状態で「▶」を選択、「実行」を押します
- すると、処理が通ったタイミングでブレークポイントのある位置に止まります
確認したいコード行を簡単にデバッグすることができるので覚えておきましょう
変数の中身を確認する方法
6行目の処理を通った後、
usersにはどんなデータが入っているのか、ちゃんとデータが入っているのか気になりますよね
そういう時にはウォッチウィンドウが使えます
- usersにカーソルを置き、右クリック
- 「ウォッチ式の追加」を選択します
- 「式」に users が入っていることを確認し「OK」を押します
- ウォッチウィンドウが表示されます
- 表示されたことを確認したらデバッグモードに移ってみましょう
usersをまだ通っていないため、値にEmpty値と表示されています - 「F8」で処理を進めます
usersを宣言しましたが、まだ値が入っていないのでEmpty値の表示のままです - 「F8」で処理を進めます
usersに値が入ったので、ウォッチウィンドウの値と型の表記が変わりました - ウォッチウィンドウの「+」を押してusersの中身を確認してみましょう
Excelのセルの通り、10人分の名前が取得できていることを確認できました
コードが意図した動作にならないとき、デバッグを活用して解決していきましょう