かばくん
エラーがたくさん出て、進みません(泣)
どこが間違ってるかわかりません・・・。
へびせんせい
プログラミングをしていると、必ずエラーには遭遇します。
エラーを見つけるのもプログラミング技術の一つ。
効率よくエラーを解消する方法を教えます!
コメントについて
プログラミングにおけるコメントとは、
使う用途としては、主に次の2つがあります。
- 処理の内容や説明を書いておき、メモ書きとして使う
- プログラムの動作を確認するために、一部のコードを動かないようにする
VBAでのコメントの使い方
直接コードを入力する方法
コメントを表すにはコード中にシングルクォーテーション ' を入力します。
1キーで入力できますが、複数行をコメントしようとすると少し手間がかかります。
コメントブロックを使う方法
VBEにあるコメントブロックアイコンを使って選択行を一括してコメントにできます。
おそらく、初期状態だと、コメントブロックは表示されていないので、まずは設定でコメントブロックアイコンを表示させます。
- 表示 → ツールバー → 編集 にチェック
- 編集ツールバーの中にアイコンがある
- ツールバーはドラッグして、メニュー内に配置できる
また、隣の非コメントブロックアイコンを押すことでコメントを解除できます
コメントはたくさん使ったほうがよい
良いコードはコメントも豊富です。
他の人が見てもわかりやすくすることができますし、なにより自分で振り返ったときに役に立つことが多いです。
プログラムは後から軽微な修正をすることが意外と多いです。そのときに、自分のコードでも「???」とならないように、コメントを残す癖をつけましょう。
サンプルコード
Sub 今日の日付()
'今日の日付をA1セルに入力するマクロ'
'まずClearメソッドですべてのセルの値を消去する'
Cells.Clear
'A1セルにDate関数で今日の日付を入力する'
Range("A1").Value = Date
End Sub
*都合により、コメントの末尾にも ' を付けていますが、不要です
デバッグについて
デバッグとは、プログラムのエラーを見つけて正しく修正することです。
バグを取り除く手段はいろいろありますが、よく使われる方法を紹介します。
- コメントアウトを使う
- ブレークポイントを使う
- ステップインを使う
- ローカルウィンドウを使う
次のサンプルコードはエラーが存在し、正しく動作しないマクロです。
Sub debug_sumple()
Dim msg As String
Dim num As Long
msg = "Hello"
num = "World"
Range("A1").Value = msg & num
End Sub
コメントアウトを使う
コメントを使って、エラーがありそうな箇所をコメントにして、マクロを実行させながらエラーを探す方法です。
上のサンプルコードのエラーの一つは、整数型の変数numに"World"という文字列を代入しているところです。
試しに、この行をコメントアウトして、実行するとどうでしょうか。
エラーが解消され、この行にエラーが存在することがわかります。
ブレークポイントを使う
比較的、コードが長くなってくると、コメントアウトを付けるのも大変になってきます。
そのようなときは、ブレークポイントを使うと良いでしょう。
ブレークポイントの使い方
- プログラムを止めたい箇所の左側をクリックする
- マクロを実行する(F5)
- その行の直前まで動作し、止まる
- もう一度、マクロを実行すると、ブレークポイント以降が動作する
エラーが表示されたタイミングにより、ブレークポイント以前か以降かでエラーの場所を推測することができます。
また、プログラムを途中で止めることで、途中の変数の中身を見ることも可能です。(詳細は次のローカルウィンドウで)
ステップインを使う
より細かく動作を確認するときはステップインという機能を使うと良いでしょう。
ステップインの使い方
- デバッグ → ステップイン をクリック(F8)
- 1行だけ実行される(最初はマクロ名が点灯)
- F8キーを押し、ステップインを繰り返す
- エラーがある行で、プログラムが止まる
この機能はブレークポイントと組み合わせることができるので、おおまかにブレークポイントを設定し、細かくステップインを使っていくと、効率的にエラーを見つけることができます。
ローカルウィンドウを使う
エラーは出ずにプログラムは動作するのだけど、計算結果等が思い通りにならないときがあります。
そういうとき、プログラム中の変数の中身を見ることで、どこの計算が間違っているかを調べる方法をとります。
このとき使われるのがローカルウィンドウというものです。
ローカルウインドウの使い方
- 表示 → ローカルウインドウ をクリック
- 画面の下側にローカルウインドウが表示される
- マクロを実行し(F5)、エラーがでたらデバッグ をクリック
- エラー時の変数の中身がウォッチウィンドウに表示される
変数numの値が0になっているので、おかしいことに気づくことができる
ローカルウインドウもブレークポイントやステップインと組み合わせて使うことができます。
コメント・デバッグについて
へびせんせい
エラーを見つけることは重要ですが、あまり時間をかけすぎても非効率的なのは事実。
ときには第三者の目を借りた方が早く解決することもよくあります。
*練習問題はありません