Excel VBAの変数を宣言する方法:Dim

「Dim」とは「Dimension」の略で、Excel-VBAでは、変数に「どのような値だけが代入されるのを許すか」宣言するために使用します。

なぜ変数の型を指定する必要があるのか?

「指定しなくても使用できるのに?」と思われる方も多いと思いますが、不測の事態等を予防するために、変数の方の指定は必須です。

Excel VBAでは、型を指定しない場合、変数の型はバリアント(Variant)型がデフォルトとなります。バリアント型=全てのデータに対応した変数の型ですので、意図しない値や命令までも、変数の値として処理してしまい、予期せぬ不具合を引き起こす可能性があります。原因を探す「デバッグ(Debug)」を行ったとしても、宣言されていない変数を探すのはとても難しく、特定が困難となります。

また、変数を使用する=PCのメモリの容量を使用することですので、どのような値でも入るようにするために、PC自体もメモリの「空き容量」を多く確保しようと処理することがあります。データの大きさによっては処理速度が非常に低下することがあります。変数の型を指定することにより、PCは「指定された型によって決められた容量」のみを変数に割り当てるだけで良くなりますので、処理速度の向上につながります。

型宣言を強制する方法

上記の理由から、方宣言を強制するのが良いです。この方法には2通りあります。

  1. マクロ作成前に、VBE(Visual Basic Editor)の「ツール→オプション」の「編集」タブ内の「変数の宣言を強制する」にチェックを入れる。
  2. モジュールの一番上(「宣言セクション」)に、「Option Explicit」を記入する(マクロ作成中・後でも可)。

これで型宣言していない変数はコンパイルエラーとなり使用できなくなります。

宣言方法

構文例は以下の通りです。

as の後には変数の型、あるいはオブジェクト名を指定することができます。

以下はDimを使って型宣言を行った例です。今回は、文字列を格納できる変数String型を使用しました。

以下のようにすると、一度に複数の変数を宣言することもできます。

マクロ例(変数の例のみ):

注意として 

と宣言した場合、最後の変数「c」のみがString型で、他の変数「a,b」はデフォルトの「バリアント型」となってしまい、型を宣言していないのと同じ状態となります。

Excel-VBAでは、「Dim」を使用しなくても変数を使用できますが、プログラムでは(どの言語でも)変数は必ず型を指定して使用するのが一般的です。

まとめ

今回はVBAで変数を宣言する「Dim」をご紹介しました。VBA使用の際に必ず必要な知識ですので、ぜひ覚えておきましょう。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて