VBA のグローバル変数

Iqra Hasnain 2023年6月21日
VBA のグローバル変数

VBAでグローバル変数を作成する方法を紹介します。 また、VBA でグローバル変数を使用することの利点と欠点についても説明します。

VBA のグローバル変数

VBA で変数を操作しているときに、複数の関数で同じ変数を使用する必要がある状況に遭遇します。 ただし、関数内で宣言された変数は、その関数の外では使用できません。

このために、VBA でグローバル変数を宣言します。 グローバル変数は、マクロの開始時に宣言される変数です。

これらの変数は関数の外で定義され、関数またはモジュールで使用されます。 変数は Public または Global キーワードで宣言されます。

以下に示す手順に従って、グローバル変数を宣言できます。

  1. Global または Public というキーワードを使用します。
  2. キーワードを記述した後、変数の名前を宣言します。
  3. データ型のリストを取得するには、as と記述します。
  4. 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

出力:

VBA の 2つの異なるサブで使用するグローバル変数

上記の例からわかるように、カーソルが firstSub() 内にある場合、最初のサブルーチンからのメッセージが表示され、カーソルが secondSub() 内にある場合、2 番目のサブルーチンからのメッセージが表示されます。

このようにして、複数のサブルーチンで同じ変数を使用できます。 異なるモジュール間でグローバル変数を導入したい場合は、以下に示すようにコードを記述できます。

Dim globalVar As String

Sub firstSub()

globalVar = 10

End Sub

Sub secondSub()

MsgBox (globalVar)

End Sub

出力:

VBA の 2つの異なるサブで使用し、firstSub から値を取得するグローバル変数

上記の例からわかるように、firstSub() からコードを実行すると、値がグローバル変数に割り当てられます。 secondSub() からコードを実行すると、その値が表示されます。

次に、VBA でグローバル変数を使用することの利点と欠点について説明します。

VBA におけるグローバル変数の利点

グローバル変数の主な利点は次のとおりです。

  1. グローバル変数は VBA コードのすべての関数とモジュールに使用できるため、これらの変数はグローバルにアクセスできます。
  2. グローバル変数を 1 回定義するだけで、VBA コードで複数回使用できます。
  3. 変数を使用すると、長いコードを書くことによる複雑さや、変数を複数回使用することによって生じる混乱を避けることができます。
  4. 定数変数を宣言すると、VBA マクロの一貫性が保証されます。
  5. グローバル変数の重要な要素は、メンテナンスの容易さです。
  6. 変数の宣言が 1 回で済むため、VBA コードの行数が削減されます。 このようなタイプのコードは読みやすいです。

ここで、VBA でグローバル変数を使用することの欠点について説明しましょう。

VBA におけるグローバル変数の欠点

グローバル変数に関連する欠点は次のとおりです。

  1. 変数が明示的に定義されているため、コードのデバッグが複雑です。
  2. ある時点での変数のマイナーな変更は、その変数に関係するすべてのポイントへの変更を意味し、VBA コードの機能を低下させます。
  3. グローバル変数は親モジュールに依存しており、同じ VBA コード内で複数のモジュールが使用されている場合、各モジュールを毎回再設計する必要があります。