「エラーが出てしまったけどよくわからない…」
VBAを使っていると、こんなこともありますよね。
1行ずつ実行して確認したいけど、どうしたらいいの?
そんな疑問を解決します。
VBAで1行ずつ実行する方法

VBAで1行ずつ実行するには「ステップイン」を使います。
実際に1行ずつ実行してみましょう。
以下のVBAを使います。
コピーして使ってみてください。
Sub stepin1()
Range("A1") = "VBA"
Range("A2") = "1行ずつ"
Range("A3") = "実行する"
Range("A4") = "方法"
End Sub
まずこれを通常通り実行すると、以下のようになります。

1行ずつ実行しても同じ結果になりますので、やってみましょう。
まず、開発タブのマクロから今回使う「stepin1」のマクロを選択します。
実行を押したいところですが、1つ下のステップインをクリックしましょう。

VBE画面が開き、一番上のマクロ名の行が黄色くなっています。
ここで「F8」キーを押すと、黄色の行が実行されます。
1回押すと、次の行が黄色になりましたね。

もう一度押すと、A1セルに「VBA」と入力され、次の行が黄色になります。

「F8」キーを押すたびに1行ずつ実行されていくことがわかりましたね。
では、「For~Next」のループ処理をする場合、どんな風に実行されるのか見ていきましょう。
ループ処理の確認
ループ処理でも1行ずつ実行して確認することができます。
以下のVBAを使って試してみましょう。
Sub stepin2()
Dim i As Long
For i = 1 To 5
Range("A1") = i
Next i
End Sub
上記のコードはA1セルに1から5までの数字を繰り返し上書きするものになります。
そのため通常通りに実行するとA1セルにはループ最後の「5」が入ります。
1行ずつ実行するとどうなるのか見てみましょう。
先ほどと同じようにステップインを選択します。

「F8」キーを3回押すと、1回目のループ処理が実行されます。
Excelのシートを確認すると、1が入力されているのがわかります。

さらに2回押すとA1セルは「2」に、もう2回押すと「3」というように順番に数字が入力されます。
A1セルが5になると5回のループが終了となります。
ループ処理がうまくいかない時は、ぜひ1行ずつ実行して確認してみてください。
Debug.Print(デバッグプリント)とは
ループ処理の確認方法として、「Debug.Print」も使えます。
まず、設定として「イミディエイトウィンドウ」を表示しておきましょう。
VBEの表示タブの中にあります。

クリックすると、VBE画面の下の方にイミディエイトと書かれた枠が表示されます。
では、以下のVBAを使ってみましょう。
Sub stepin3()
Dim i As Long
For i = 1 To 5
Debug.Print i
Next i
End Sub
ループ処理の中に「Debug.Print i」がありますよね。
これが、変数iの値をイミディエイトウィンドウに表示する指示になります。
stepin3を実行してみましょう。
イミディエイトウィンドウに以下のように表示されたでしょうか。

「Debug.Print」を使うと、1行ずつ実行しなくても、ループ処理の内容がわかります。
ループ処理をしたいときは使ってみると良いでしょう。
指定の場所まで実行する方法

1行ずつ実行して確認するのも良いですが、ここまでは一気に進めたい!というようなこともありますよね。
指定の場所まで実行する方法、あります。
「stepin1」のマクロを使って説明します。
Sub stepin1()
Range("A1") = "VBA"
Range("A2") = "1行ずつ"
Range("A3") = "実行する"
Range("A4") = "方法"
End Sub
上記のコードを「VBA」「1行ずつ」「実行する」まで一気に実行してみましょう。
まず、「Range(“A4”) = “方法”」の中にカーソルが表示されるように、どこでもいいのでクリックしておきましょう。
次に「Ctrl」キーを押しながら「F8」キーを押します。
Excelのシートを確認してみると、「VBA」「1行ずつ」「実行する」が表示されていますよね。
クリックした前の行までを実行するのが「Ctrl + F8」です。
まとめ

この記事をよんでいただきありがとうございます。
VBAを勉強、使ってみるにあたり、確認作業は必須です。
どんな処理がされているか中身を確認したい、エラーの原因がわからないから1行ずつ実行したいというようなこともありますよね。
この記事がVBAを学ぶみなさまのお役に立てると嬉しいです。


コメント