エラー内容
VBAコンパイル時に、「変数が定義されていません。」と表示される。
原因と解決方法
変数の宣言を強制している時(モジュールの先頭でOption Explicit)に、変数の定義が正しくされていないと発生するエラーです。
注意!
一部のサイトで「変数の宣言を強制しないようにすればいい ⇒ Option Explicitを削除しよう」とあります。
これは絶対NGです。その場しのぎになって、後で後悔します。
一部のサイトで「変数の宣言を強制しないようにすればいい ⇒ Option Explicitを削除しよう」とあります。
これは絶対NGです。その場しのぎになって、後で後悔します。
具体的には、次の2つの原因と解決方法が考えられます。
原因1. 変数を定義していない
解説
次のプログラムのように、いきなり変数(kekka)を使っていると発生します。
1 2 3 4 5 6 7 8 |
'修正前 Sub ErrSample01_01() kekka = 5 + 2 '← 変数kekkaをいきなり使っている End Sub |
解決方法
変数を使う前に、Dimステートメントで変数を定義しましょう。
1 2 3 4 5 6 7 8 9 10 |
'修正後 Sub ErrSample01_01() Dim kekka As Long '← 変数kekkaを使う前に定義 kekka = 5 + 2 End Sub |
「変数の定義」とは、「この名前の変数を使うよ」とVBAに教えてあげることです。この時に名前だけでなく、型(何を保存するか)をAsの後ろに記述します。
主な型
・文字の時:String
・整数の時:Long
・小数点以下がある数値の時:Double
・文字の時:String
・整数の時:Long
・小数点以下がある数値の時:Double
原因2. スペルを間違っている
解説
「変数の定義をしているのにエラーが表示される・・・」とハマってしまうのが、スペルミスをしている時です。
プログラムを組んでいる時は正しく入力したつもりなので、自分ではなかなか気付けないこともあります。
1 2 3 4 5 6 7 8 9 |
'修正前 Sub ErrSample01_02() Dim kekka As Long kakka = 5 + 2 '← eがaとなっている End Sub |
解決方法
変数定義と、変数を使用している箇所で名前を一致させます。
今回の例だと、kakka→kekkaに修正します。
1 2 3 4 5 6 7 8 9 |
'修正後 Sub ErrSample01_02() Dim kekka As Long kekka = 5 + 2 '← kakka→kekkaに修正 End Sub |
POINT
スペルミスはもったいないので、次の2つの方法でできる限り減らしましょう。
1.タイピングは極力しないで、コピー&ペースト
2.変数名を途中まで入力して、Ctr+Spaceで入力候補から選ぶ
スペルミスはもったいないので、次の2つの方法でできる限り減らしましょう。
1.タイピングは極力しないで、コピー&ペースト
2.変数名を途中まで入力して、Ctr+Spaceで入力候補から選ぶ