連載
» 2016年07月14日 05時00分 UPDATE

Excelマクロ/VBAで始める業務自動化プログラミング入門(3):マクロが動かない原因の見つけ方とVBAの変数、データ型 (1/4)

プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、VBEのデバッグ方法としてステップイン実行とブレークポイントの設定を紹介し、エラー対処法やプログラムに重要な変数、データ型などについて解説します【Windows 10、Excel 2016に対応】。

[薬師寺国安,PROJECT KySS]

動かない原因=「バグ」のないプログラムを作るために

 プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説する本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」。前回の「初心者でも図解で分かる! VBEの基本的な使い方とVBAプログラムの基礎文法」では、オブジェクト、プロパティ、メソッド、関数など、プログラミングに必要な専門用語や開発ツール「VBE(Visual Basic Editor)」の使い方を解説した。

 今回はVBEでマクロを実行する際に、マクロを1行ずつ実行させる「ステップイン」、任意の位置まで実行する「ブレークポイント」、さらに「エラー」への対処方法や「変数」「データ型」など、プログラミングをする上で重要な項目について解説する。

 「マクロを1行ずつ実行させて、一体何の意味があるんだろう」と思う読者もいるかもしれない。マクロを1行ずつ実行させると、どこのコードでどのような結果が出るかを目で直接確認できる。当然、プログラムには付きものの「バグ」(プログラムが動かない原因、「不具合」ともいう)の発見にも役に立つのだ。こういった目立たない処理を試すことが、バグのないプログラムを作る早道だ。「急がば回れ」である。

 プログラミングの基本は、まず「バグのないプログラム」、次に「ユーザーが操作するのに分かりやすいプログラム」を作ることだと筆者は考える。「バグのないプログラム」は当然であるが、複雑なプログラムになるとバグを見つけるのが難しくなってくる。本稿では、バグの見つけ方から解説し、次に、これまでの連載で出てきた、プログラミングに欠かせない基本事項「変数」「データ型」について解説しよう。

 なお、「ユーザーが操作するのに分かりやすいプログラム」を作成することも、難しいことだ。本連載では、そういった「使いやすさ」を考慮したプログラムの作成についても織り交ぜて紹介する。

VBEにおける主な2つの「デバッグ」の仕方

 プログラミングにおいて「プログラムが動かない原因」つまり「バグ」を見つけて取り除くことを「デバッグ」という。また、「デバッグ」を行う開発ツールの機能のことを「デバッガ」という。

 VBEのデバッガとしての機能を使ったデバッグには、主に「ステップイン」の実行と「ブレークポイント」の設定の2つの方法がある。

マクロを1行ずつ実行させる「ステップイン」

 マクロを1行ずつ実行しながら、デバッグする方法を「ステップイン」という。「ステップイン」では、マクロの処理を1行ずつ実行しながらExcelの画面で結果を直接確認できるので、コードの間違い(バグ)の発見に非常に有効だ。

 ステップインの動作結果を確認するには、図1のようにExcelの画面とVBEの画面を並べて表示しておいた方が分かりやすいだろう。

図1 Excelの画面とVBEの画面を並べて表示する例

 まず、動作を確認するマクロ内にマウスカーソルを移動する。そこで[F8]キーを押すとVBEが中断モードになって、最初のマクロのステートメントが黄色く反転表示される(図2)。

図2 [F8]キーを押すと最初のコードが黄色く反転表示する

 [F8]キーを押すたびに、1行ずつコードが実行され、「End Sub」まで反転表示して、Excel上に「住所」「名前」が表示される(図3)。

図3 [F8]キーを押すごとに1行ずつコードが実行され、最後に「住所」と「氏名」がExcel上に表示された

 このステップインは、[F8]キーを押す以外に、VBEのメニューの[デバッグ]→[ステップイン]からでも実行できる。

 ステップインを途中で止める場合は、VBEメニューの[実行]→[リセット]で中止できる。

 これらの動作は、文面での説明を読むより、読者が実際に手を動かして試してみることが重要だ。

任意の位置まで実行する「ブレークポイント」の設定

 「ブレークポイント」は、デバッガに対して、プログラムの実行を一時停止するように指示する「特定の位置」のことだ。ブレークポイントで実行が中断されると、プログラムは中断モードになる。中断モードになっても、プログラムの実行は終了しない。いつでも実行を再開できる。

 ブレークポイントは、必要なときに任意の場所で実行を中断できる強力なツールだ。ブレークポイントを使用すると、コードを1行ずつまたは1命令ずつステップ実行する必要がなくなる。その代わりに、ブレークポイントにヒットするまでプログラムを実行してからデバッグを開始できるので、ブレークポイントの使用によって、デバッグ処理の時間が大幅に短縮される。

 では、ブレークポイントの設定方法を見てみよう。

 ブレークポイントを設定する行の行頭にマウスカーソルを移動し、マウスカーソルが矢印に変わったら、クリックする。すると、その位置にブレークポイントが設定され●印が追加される(図4)。

図4 ブレークポイントが設定された

 図4の状態から、マウスカーソルを実行するマクロの中に移動し、VBEメニューの[実行]→[Sub/ユーザーフォームの実行]をクリックする。すると、Excel上に一瞬で「住所」と「名前」が表示される(図5)。

図5 ブレークポイントまでマクロが実行された

 例えば何万行ものプログラムがあった場合、「この場所からこの場所までの動作を確認したい」といった、限定した範囲内のプログラムのみを実行できる利点がある。

 ブレークポイントを解除したい場合は、ブレークポイントの●をクリックする。

 ブレークポイントが指定された位置まで実行され、その時点でブレークポイントを解除するには、ブレークポイントの●の上に矢印が表示されている状態で、マウスの右クリックで表示されるメニューから、[設定/解除]→[ブレークポイント]と選択する。すると、コードが「ステップイン」のときのように黄色く反転表示するので、VBEのメニューから[実行]→[リセット]と選択する。これで、完全にブレークポイントが解除される。

デバッグ時の注意点

 注意しなければならないのは、「ステップイン」でも「ブレークポイントの設定」でも、実行したいマクロ内にマウスカーソルを移動してから実行することだ。この点を忘れないように注意していただきたい。

 次ページでは、マクロの「エラー」対処法を見ていこう。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。