「変数が定義されていません」のエラーを解決できない・・・
「変数が定義されていません」のエラー原因を知りたいな・・・
できれば、根本的な解決方法も知りたい・・・
VBAを始めて変数を使い始めたころに遭遇するエラーが、「変数が定義されていません」です。初めてみたときは、原因がよくわからない方も多いですよね。ただ、変数は使う頻度が多いため、具体的な原因や対策を打っておかないとコードを書くよりもエラーに遭遇する回数が多くなってしまい、萎えてしまう人もいると思います。
こんにちは!フリーランスエンジニア兼テックライターの脇坂です。
この記事では、VBAで「変数が定義されていません」のエラーで悩む人向けに、具体的な原因・解決策を解説します。
この記事はこんな人のために書きました。
- VBAで変数を使い始めて間もない人
- 「変数が定義されていません」のエラーで悩んでいる人
「変数が定義されていません」エラーが起こる理由
最初に、「変数が定義されていません」エラーが起こる理由について解説します。
「変数が定義されていません」エラーは、変数宣言を強制化しているときに、変数宣言をせずに実行した場合におこるエラーです。
ツール → オプションを選択すると、次のようにオプション画面が出てきます。オプション画面で「変数の宣言を強制する」にチェックを入れると、コードの一番上に「Option Explicit」が表示されます。これが、変数宣言を強制化するときのコードです。
オプション画面:
![]()
オプション画面
たとえば、次のような処理ではエラーが起こってしまいます。
エラーが起こってしまうときのサンプル:
Option Explicit
Sub Test()
num1 = 123
End Sub
実行結果:
![]()
実行結果
num1は変数宣言をしていないため、Option Explicitで変数宣言を強制化している場合に、エラーが起こってしまうのです。
変数宣言の強制化を解除すれば解決するか?
ここまで聞くと、オプションの「変数の宣言を強制する」のチェックを外そうと思う方もいるかもしれませんね。
ただ、変数宣言の強制化を解除してしまうと、エラーに気づくタイミングをなくしてしまいます。たとえば、次のようなコードです。
サンプルコード:
Sub Test()
num_1 = 5000
num_2 = 10
num_Total = num_1 * num_3
MsgBox num_Total
End Sub
実行結果:
![]()
実行結果
「num_1 × num_2」の結果をnum_Totalにセットしてメッセージ表示する処理を、誤って「num_1 × num_3」で計算してしまったため、結果が0になっています。このように、変数名の入力ミスでエラーに気づくタイミングを失ってしまうのです。
変数宣言を強制化した場合は、次のようにエラーが表示されます。
![]()
変数宣言を強制化したときの実行結果
num_2をnum_3に間違えてしまったことが、一目瞭然ですよね。このように、ミスを防ぐために必要なのです。
そのため、慣れるまでは少し大変かもしれませんが、変数宣言をしていない変数がないか確認していくことが重要です。
VBAの変数の書き方とは?
「変数が定義されていません」のエラーが良く出てしまう人は、変数の書き方を再確認しておくことがおすすめです!
変数宣言方法:
Dim 変数名 as 変数の型
詳細は以下で詳しく解説しているので、ぜひ見てみてくださいね!
【VBA入門】変数をDimで宣言し、 Asでデータ型を定義する方法
更新日 : 2019年10月1日
まとめ
今回は、VBAで「変数が定義されていません」のエラーが出る原因・解決策について解説しました。
解説したようにエラーが出ることによってミスを防げるとしても、同じエラーを何度も出したくはないですよね。必ず変数宣言する癖をつけることで、このエラーは解決できます。
最後に紹介した変数の使い方を見つつ、ぜひ変数の使い方を覚えてくださいね!