エクセル VBA 3回目です。
コードを編集する方法がわかったので、編集したコードの動きを確認します。
使う機能はデバッグメニューの中にあるステップ実行です。
デバッグとはプログラム上の間違いや不具合を修正する作業のことを言います。
前回までの記事は以下を参照。
※ Excel のバージョンは 2021 を使用しています
ステップ実行とは
ステップ実行は入力されたコードをひとつずつ動かす機能です。
ひとつずつ動かすことで、どこで何が変わったかを確認することができます。
想定通りの動きをしていない場合などは、この機能を使って原因特定したりします。
↓ こんな画面 (下の画像は「マクロの使い方・作り方」で使った画像です)

準備
まずはステップ実行を試すため、簡単なコードを作成します。
新規でマクロを作成して、以下のコードを入力してください。
新規マクロの作成はマクロ画面にマクロ名を入れて「作成」ボタンをクリック。
※ 前回までに作成したマクロでも問題ありません。

Sub ステップ実行()
Range("B2").Value = "あいう"
Range("B3").Value = "カキク"
' 文字を入れる箱 (hako) を用意
Dim hako As String
hako = Range("B2").Value
hako = hako + Range("B3").Value
Range("B4").Value = hako
End Sub
何となくわかるかもしれませんが、以下の順番で動きます。
- B2 セルに “あいう” を書き込む
- B3 セルに “カキク” を書き込む
- hako という変数 (※下記参照) に B2 セルの値を入れる
- hako に hako と B3 セルの値をつなげて入れる
- B4 セルに hako の値を入れる
ポイント
変数とは、プログラミングや数学で使う 「値を入れておく箱」のようなものです。
hako という名前にしましたが、aaa でも data でも構いません。
何に使用するかわかりやすい名前にすることが推奨されます。
以下の記述で、「●● という名前の変数を使います」という宣言になります。
Dim ●● As String
String は文字列という意味で、VBA で決められた形式を意味しています。
他にも Integer (整数値)、とか Boolean (真偽値) などいろいろあります。
実行方法
ステップ実行は、キーボード操作とマウス操作のどちらでも可能です。
慣れてくるとキーボード操作のほうが簡単ですが、どちらでも使いやすいほうで問題ありません。
一番簡単な実行方法は、マクロ画面から「ステップ イン」ボタンをクリック。
※ コード編集画面の実行したいマクロ内にカーソルを移動して F8 ボタンクリックでも可

↓ コード編集画面に黄色ラインの行が表示されればステップ実行の始まりです

ステップイン (F8 ボタン)
ステップ実行が開始されたら、上部メニューのデバッグからステップインをクリックするか、F8 ボタンをクリックすることで処理をひとつ進めることができます。
毎回メニューから選択するのは大変なので、F8 ボタンで進めると楽です。

↓ 次のステップに進みます

ポイント
以前の記事にも書きましたが、黄色ラインのコードはこれから実行されるコードでまだ実行されていません。

さらに次のステップに進めると、実際にセルの値が変わることが確認できます。
次のステップに進める方法は、「デバッグメニューからステップイン」もしくは「F8 キークリック」です。
↓ ステップをひとつ進めたあと

黄色い線が移動した後には、エクセルシートの値も変わっています。

ステップイン実行の終了
黄色い線を最後 (End Sub となっているところ) まで進めるとひとつの処理が終了となります。
Sub とは処理のをまとめたもので、処理の途中からべつの Sub を呼び出すこともできます。
※ Sub のほかに、Function というのもあります。(Sub と Function の違いはまた別のときに)
処理終わり、次の処理がなくなると黄色い線がなくなります。


エクセルのシートにもすべて反映されています。

途中でやめる場合
ステップ実行を途中でやめる場合は、以下の方法で終わらせることができます。
実行したところまでで強制的に終了するか、最後まで実行するかのどちらかを選べます。
リセット
現在中断されているところで処理を終了します。
メニュー内の「■ (停止) ボタンクリック」、または「実行メニュー → リセット」でステップ実行を終了します。
黄色い線が消え、中断したところで処理が終了します。

↓ 実行結果

ステップ実行したところまでで処理が終了するので、実行されなかった処理は無視されます。
Sub/ユーザーフォームの実行 (F5 ボタン)
すべての処理を実行させて終了する方法です。
メニュー内の「▶ (再生) マーククリック」、または「実行メニュー → Sub/ユーザーフォームの実行」、または「F5 キークリック」でステップ実行を終了できます。
黄色い線が消え、処理が最後まで実行されます。

↓ 実行結果

便利な機能
ステップ実行中やコード編集中に便利な機能があるので紹介します。
便利な機能を使うことで VBA の理解が深まります。
Data Tips (データヒント)
ステップ実行中にマウスカーソルを当てると、当てた項目の現在の値がポップアップで表示されます。
この機能の名称は Data Tips (データヒント) と呼ばれるようです。名称知りませんでした……。
以下は、B3 セルの値を確認しています。

↓ 処理を進めてみると、値が変わったことが確認できます。

実際のセルの値も変わっています。

変数の値も確認可能
セルの値以外にも、プログラムの中で使われている変数や、定数と呼ばれる VBA 内で定義された固定値の中身も見れます。
変数の確認
初めは何も格納されていない状態

↓ B2 セルの値が格納される

↓ 現在の値に B3 セルの値を後ろに追加

hako の中身が あいうカキク になりました。
定数の確認
以下は、VBA で定義されている xlSolid という定数。
なんだかよくわからないので確認してみると、1 という数字が入っていることがわかります。
※ 定数はプログラム上で変更することはできません。
.pattern = 1 と書いても同じ結果になります。

イミディエイトウィンドウ
イミディエイトウィンドウは、変数の値を確認したり、コードを一時的に実行したり、デバッグ情報を出力したりできるウィンドウです。
イミディエイト (Immediate) とは、「即時」とか「すぐに」 という意味で、すくに実行して確認できるウィンドウということのようです。
イミディエイトウィンドウはステップ実行中ではなくても実行可能です。
表示方法
上部メニューの「表示 → イミディエイトウィンドウ」または、「Ctrl + G ボタン」で表示できます。

以下が表示されたイミディエイトウィンドウ

使い方
使い方は、イミディエイトウィンドウ内に実行したいコードを入力して Enter ボタンをクリックするだけ。
入力したコードが即座に実行できます。
値の確認
確認したい項目の先頭に ? マークを追加して実行すると、項目に設定されている値を確認できます。
以下は、B2 セルの値を確認する方法
?Range("B2").Value

↓ Enter ボタンクリック後

コード実行
コードの一部を入力してそのまま実行することができます。
ステップ実行中に以下のコードを実行してみます。
※ ステップ実行中ではなくても実行は可能です。
Range("C2").Value = "えお"
ステップ実行中 (コード実行前)


↓ イミディエイトウィンドウでコードを実行

ステップ実行中のコードに書かれていないことを実行できます。
その他にも、「値の確認」と組み合わせて計算式を実行することもできます。
?100+5

プログラムから値の出力
コードに Debug.Print と記載することで、実行中の情報をイミディエイトウィンドウに出力することができます。
短い処理であればあんまり使用しませんが、長い処理の場合に有効なので覚えておきましょう。
Debug.Print hako

↓ Debug.Print が実行されるとイミディエイトウィンドウに出力されます。

まとめ
ステップ実行の方法と、便利機能でした。
ステップ実行を覚えるとプログラムの間違っているところを発見しやすくなります。
上級者もトラブル対応やプログラム検証に使用するので、是非覚えておきましょう。