「変数が定義されていません」のエラーを解決できない・・・
「変数が定義されていません」のエラー原因を知りたいな・・・
できれば、根本的な解決方法も知りたい・・・
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で「変数が定義されていません」のエラーが出る原因・解決策について解説しました。
解説したようにエラーが出ることによってミスを防げるとしても、同じエラーを何度も出したくはないですよね。必ず変数宣言する癖をつけることで、このエラーは解決できます。
最後に紹介した変数の使い方を見つつ、ぜひ変数の使い方を覚えてくださいね!