VBA のグローバル変数
VBAでグローバル変数を作成する方法を紹介します。 また、VBA でグローバル変数を使用することの利点と欠点についても説明します。
VBA のグローバル変数
VBA で変数を操作しているときに、複数の関数で同じ変数を使用する必要がある状況に遭遇します。 ただし、関数内で宣言された変数は、その関数の外では使用できません。
このために、VBA でグローバル変数を宣言します。 グローバル変数は、マクロの開始時に宣言される変数です。
これらの変数は関数の外で定義され、関数またはモジュールで使用されます。 変数は Public
または Global
キーワードで宣言されます。
以下に示す手順に従って、グローバル変数を宣言できます。
Global
またはPublic
というキーワードを使用します。- キーワードを記述した後、変数の名前を宣言します。
- データ型のリストを取得するには、
as
と記述します。 - VBA コードに含まれるデータ型を選択します。
異なる時間のサブモジュールに 2つの変数を含める必要がある場合は、グローバル変数を明示的に定義することをお勧めします。 以下に示すように、グローバル変数 str
を宣言し、2つの異なるサブルーチンで使用する例を見てみましょう。
Dim str As String
Sub firstSub()
str = "This is first Sub"
MsgBox (str)
End Sub
Sub secondSub()
str = "This is second Sub"
MsgBox (str)
End Sub
出力:
上記の例からわかるように、カーソルが firstSub()
内にある場合、最初のサブルーチンからのメッセージが表示され、カーソルが secondSub()
内にある場合、2 番目のサブルーチンからのメッセージが表示されます。
このようにして、複数のサブルーチンで同じ変数を使用できます。 異なるモジュール間でグローバル変数を導入したい場合は、以下に示すようにコードを記述できます。
Dim globalVar As String
Sub firstSub()
globalVar = 10
End Sub
Sub secondSub()
MsgBox (globalVar)
End Sub
出力:
上記の例からわかるように、firstSub()
からコードを実行すると、値がグローバル変数に割り当てられます。 secondSub()
からコードを実行すると、その値が表示されます。
次に、VBA でグローバル変数を使用することの利点と欠点について説明します。
VBA におけるグローバル変数の利点
グローバル変数の主な利点は次のとおりです。
- グローバル変数は VBA コードのすべての関数とモジュールに使用できるため、これらの変数はグローバルにアクセスできます。
- グローバル変数を 1 回定義するだけで、VBA コードで複数回使用できます。
- 変数を使用すると、長いコードを書くことによる複雑さや、変数を複数回使用することによって生じる混乱を避けることができます。
- 定数変数を宣言すると、VBA マクロの一貫性が保証されます。
- グローバル変数の重要な要素は、メンテナンスの容易さです。
- 変数の宣言が 1 回で済むため、VBA コードの行数が削減されます。 このようなタイプのコードは読みやすいです。
ここで、VBA でグローバル変数を使用することの欠点について説明しましょう。
VBA におけるグローバル変数の欠点
グローバル変数に関連する欠点は次のとおりです。
- 変数が明示的に定義されているため、コードのデバッグが複雑です。
- ある時点での変数のマイナーな変更は、その変数に関係するすべてのポイントへの変更を意味し、VBA コードの機能を低下させます。
- グローバル変数は親モジュールに依存しており、同じ VBA コード内で複数のモジュールが使用されている場合、各モジュールを毎回再設計する必要があります。