【Excel VBA】デバッグのやり方

当ページのリンクには広告が含まれている可能性があります。
デバッグ

こんにちは、ユーキです。

今回は、Excel VBAにおけるデバッグのやり方を紹介します。

目次

デバッグの目的

デバッグの目的

デバッグはなぜする?

そもそも、デバッグは何のために行うのか?

デバッグの目的は、バグ(不具合)を修正するために問題箇所を発見して、問題の原因を特定することになります。

デバッグのやりかた

デバッグのやりかた

問題箇所を特定するためのアプローチはいろいろあります。

ステップ実行で、動きを確認する

処理を1ステップずつ実行して、プログラムを動きを確認します。

ステップ実行を行うにあたっては、以下のことを行います。

ブレークポイントを設定する

まずは、処理を停止させたいところにブレークポイントを設定します。

ブレークポイントを設置することで、そこで処理を一時停止させることができます。ブレークポイントからステップ実行をさせることも可能です。

ブレークポイント説明

ブレークポイントを設定するには、一時停止したい行の左端のグレーの箇所をクリックします。処理が停止できる行であれば、行が茶色になります。
茶色の○印がついてる箇所をクリックすると、ブレークポイントを解除できます。

対象行で、F9キーを押下しても設定/解除ができます。

ステップインで実行する

関数呼び出しをしている箇所で実行すると、関数内の処理にステップが移動します。これがステップインとなります。

ステップインはF8キーを押下で実行できます。デバッグメニューの「ステップ イン」を選択しても実行は可能です。
デバッグ時のステップ実行は何回も実行することになることが多いので、F8キーのショートカットを覚えてしまったほうがラクです。

ステップオーバーで実行する

関数呼び出しをしている箇所で実行すると、次のステップに移動します。関数内にステップは移動しません。これがステップオーバーです。

ステップオーバーでの実行

ステップオーバーは、Shift + F8キーの押下で実行できます。デバッグメニューの「ステップ オーバー」を選択しても実行は可能です。

ステップイン同様、デバッグ時には何回も実行することになりますので、Shift + F8キーのショートカットを覚えてしまったほうがラクです。

ステップアウトで実行する

今いるところから、呼び出し元の次の行まで処理が進む操作をステップアウトといいます。

ステップアウトは、Ctrl + Shift + F8キーの押下で実行できます。デバッグメニューの「ステップ アウト」を選択しても実行は可能です。

変数の内容を確認する

変数の値を確認して、計算結果や処理の戻り値が想定した値になっているかを確認します。
以下の方法で確認することが可能です。

メッセージボックスを使う

確認したい値をメッセージボックス(MsgBox関数)で表示させて、値を確認します。
一番、手っ取り早く確認できます。

確認したいところに、「MsgBox( 変数 ) 」を記述すればOKです。

イミディエイトウィンドウを使う

Debug.Printメソッドを使って、イミディエイトウィンドウに結果を表示させて、値を確認します。
メッセージボックス同様、コードの中に、Debug.Print( 変数 ) を記載すればOKです。

イミディエイトウィンドウの使い方は、以下の記事を参照ください。

あわせて読みたい
【Excel VBA】イミディエイト ウィンドウの使い方 デバッグするのに便利なイミディエイトウィンドウについて、でできることとその使い方を具体的なイメージを交えて、紹介しています。

ウォッチ式を使う

ウィッチ式を使って、変数、関数の戻りの値を確認することができます。

ウォッチ式の使い方は、以下の記事を参照ください。

あわせて読みたい
【Excel VBA】デバッグに便利|ウォッチ式の使い方 VBAにおけるウォッチ式の基本的な使い方を紹介しています。

まとめ

今回は、デバッグのやり方について説明しました。

Point
  • デバッグとは不具合を見つけるために行う作業
  • 問題個所の特定は、ステップ実行と値の確認を実施する
  • ステップ実行は、まずブレークポイントを設定する
  • ステップ実行の種別は3種類(ステップイン、ステップアウト、ステップオーバー)
  • 値の確認方法は、メッセージボックス、イミディエイトウィンドウ、ウォッチ式の3通り

少しでもお役に立てば、幸いです。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅好き職業プログラマ。文系大学卒業後、ITソフトウエア開発会社に勤務してプログラミング言語を学ぶ。現在は転職し、プロジェクトマネージャ的ポジションで生産管理システムの開発にあたる。
得意言語は、VB、VB.NET、C#.NET、Java、SQLなど。

目次