【Excel VBA】変数を宣言する

変数を宣言する

変数は使用するには、使用する前に変数を宣言するのが一般的です。変数はDimステートメントを使って宣言します。基本の構文は次の通りです。

Dim 変数名 As データ型

複数の変数を1行で宣言する場合はカンマで区切ります。

Dim 変数名1 As データ型, 変数名2 As データ型, 変数名3 As データ型, ...

「As データ型」の部分は省略できます。省略するとバリアント型とみなされます。変数名は次の名前付け規則に従う必要があります。

名前付け規則
  • 変数名には英数字、漢字、ひらがな、カタカナ、アンダースコア(_)を使用できる。ただし、先頭に数字を使うことはできない。
  • スペース、ピリオド(.)、感嘆符(!)、「@」、「&」、「$」、「#」は使用することが出来ない。
  • 長さは半角255文字以内にする。
  • VBAの関数、ステートメント、メソッド、組み込み定数など、すでに使用されている名前と同じ名前は使わない。
  • 変数名の大文字と小文字は区別されないため、ケースだけ異なる名前を使用しない。

名前付け規則は、変数以外にも定数、引数、プロシージャに名前を付けるときも同じ規則に従います。

データ型

変数のデータ型としてよく使用されるものには次のものがあります。

データ型値の範囲
バイト型(Byte)0〜255の正の整数値を格納
ブール型(Boolean)TrueまたはFalseを格納
整数型(Integer)-32768〜32767の整数値を格納
長整数型(Long)-2147483648〜2147483647の整数値を格納
単精度浮動小数点数型(Single)小数点を含む数値を格納
-3402823E38〜-1.401298E-45(負の値)
1.401298E-45〜3402823E38(正の値)
倍精度浮動小数点数型(Double)単精度浮動小数点数型より大きい小数点を含む数値を格納
-1.7976931348623E308〜-4.94065645841247E-324(負の値)
4.94065645841247E-324〜1.7976931348623E308(正の値)
通貨型(Currency)15桁の整数部分と4桁の小数部分を持つ数値を格納
-922337203685477.5808〜922337203685477.5807
日付型(Date)日時を表す値を格納
西暦100年1月1日〜西暦9999年12月31日
オブジェクト型(Object)オブジェクトの参照を格納
文字列型(String)文字列を保存する
バリアント型(Variant)すべてのデータ型を格納できる型

変数の宣言を強制する

VBAで変数の宣言は必須ではありませんが、宣言した変数しか使用できないように強制することもできます。それにはOption Explicitステートメントをモジュールの先頭部分の宣言セクションに記述します。

宣言セクションとは、モジュールの先頭から最初のプロシージャまでの領域です。モジュールの先頭にカーソルがあるときには、[プロシージャ]ボックスに[(Declarations)]と表示されます。

Option Explicitステートメントを追加する。
Option Explicitステートメントの追加

モジュールを追加したときに自動的にOption Explicitステートメントが追加されるように設定することもできます。それには[ツール]>[オプション]で表示されるオプションダイアログで[編集]タブを選択し[変数の宣言を強制する]のチェックボックスにチェックを入れます。

変数は宣言して使用するのが一般的です。変数を宣言することにより、どのような変数を使うつもりなのか、コードを読む人に伝えることができます。例えばコード中に似た名前の変数が出てきた場合、変数をタイプミスしたのか、新しい変数を使おうとしているかは、コードを理解しないと判断できません。さらに変数の宣言を強制するようにしておくと、変数のタイプミスはエラーとなりますので、コーディングミスを減らすことができます。

プロシージャレベルの変数とモジュールレベル変数

プロシージャ内でDimステートメントを使って変数を宣言すると、その変数はプロシージャの中でのみ使用できます。これはプロシージャレベル変数と呼ばれます。

モジュールの一番先頭の宣言セクションで宣言されると、その変数はモジュール内のすべてのプロシージャから使用できます。これはモジュールレベル変数と呼ばれます。

Publicステートメント

モジュールレベル変数はPublicステートメントを使用してを宣言することもできます。

Public 変数名 As データ型

このように宣言すると、その変数はプロジェクト内のすべてのプロシージャで使用できます。標準モジュールまたはクラスモジュールで宣言すると、その変数が宣言されているプロジェクトを参照するプロジェクトでも使用できます。

Priveteステートメント

モジュールレベル変数はPrivateステートメントを使用してを宣言することもできます。

Private 変数名 As データ型

このように宣言すると、その変数は同じモジュール内のプロシージャのみに制限されます。

モジュールレベルのDimステートメントでの変数宣言とPrivateステートメントでの変数宣言は等価です。

おわりに

変数のデータ型は指定して、むやみにバリアント型は使わないようにしましょう。またPublicにすると広範囲からアクセス可能になってしまうので、使用は慎重にすべきです。

よかったらシェアしてね!
  • URLをコピーしました!