バク対策 変数の宣言を強制する
バグとは「虫」のこと。
プログラムでは、誤りのことをバグ(害虫)といいます。
プログラムが勝手に誤動作することはありません。ただ指示されたとおりに動いているだけ。
ということは、その指示が間違っているということ。
バクのないプログラムを作りたいですが、これは難しい。
なので、バクが出にくい、出ても見つけやすいようになるための対策をとります。
[変数の宣言を強制する]
VBEのメニューの[ツール]、[オプション]を選び
変数の宣言を強制するにチェックを入れる
新規モジュール作成時に
Option Explicit
というステートメントが自動的にモジュールの先頭に挿入されます。
Dim などを使って宣言されていない変数が使えなくなります。
必ず宣言しなければなりません。
これはタイプミスを防ぐためです。
例えばこのプログラム。
Sub test_16()
'バク対策の勉強中
Dim moji As String
mozi = "a" + "b"
MsgBox (moji)
End Sub
エラーはでませんが、タイプミスをしているため正しい結果が出ません。
(moji を mozi と間違ってます。)
Option Explicit があるとエラーメッセージが表示されます。
そして、どこが間違っているかがわかります。
2004年8月
バク対策 エラートラップ
こんなプログラムを作ってみました。
UserForm1を開く() を実行すると、ユーザーフォームを開くというもの。
そしてそのユーザーフォームを開くとき実行されるのが、UserForm_Initialize()
ここで一つ実行時エラーがあります。0で割り算しているところです。
UserForm1を開く() を実行してみます。すると
エラーメッセージが出ました。どこが悪いのか調べるために「デバッグ」をクリック。
ここがダメとでました。ここ? ここじゃわからない。
そこで...
VBEのメニューの[ツール]、[オプション]を選び[全般]をクリック。
エラートラップの[クラスモジュールで中断]を選択する。
そして、同じようにもう一回 UserForm1を開く() を実行すると
また同じエラーメッセージが出てくる。デバックをクリックすると今度は
ここが悪いと教えてくれた。
ケースバイケースらしいのですが、とりあえずこの設定がいいのではないかと...
2007年11月