【Excel VBA】プロシージャやモジュールを跨いで変数を使用する

Excel VBA講座 開講中!

今回は、Excel VBAでプロシージャやモジュール跨いで変数を使用する方法についてご紹介します。

プロシージャを跨いで変数を使用する「モジュールレベル変数」

プロシージャを跨いで変数を使用するには、モジュールに作成した一番上のプロシージャの、さらに上の「宣言セクション」で変数を宣言します。

下記のサンプル1では、宣言セクションで宣言した変数「str」に、プロシージャ「モジュールレベル変数1」で値を代入し、プロシージャ「モジュールレベル変数2」でも使用しています。

・サンプル1

Option Explicit

Dim str As String

Sub モジュールレベル変数1()

str = “変数”

MsgBox “モジュールレベル変数1:” & str

Call モジュールレベル変数2

End Sub

Sub モジュールレベル変数2()

MsgBox “モジュールレベル変数2:” & str

End Sub

モジュールを跨いで変数を使用する「パブリック変数」

モジュールを跨いで変数を使用するには、モジュールに作成した一番上のプロシージャの、さらに上の「宣言セクション」で、

Public 変数名 As 型

のように変数を宣言します。

下記のサンプル2とサンプル3ですが、まずmodule1にサンプル2のプログラムを作成し、次にmodule2にサンプル3のプログラムを作成します。

サンプル2のプロシージャ「パブリック変数1」の宣言セクションで宣言したパブリック変数「num」に、プロシージャ「パブリック変数1」で値を代入し、module2に作成したプロシージャ「パブリック変数2」でも使用しています。

・サンプル2

Option Explicit

Public num As Long

Sub パブリック変数1()

num = “777”

MsgBox “パブリック変数1:” & num

Call パブリック変数2

End Sub

・サンプル3

Option Explicit

Sub パブリック変数2()

MsgBox “パブリック変数2:” & num

End Sub

シェアする

  • このエントリーをはてなブックマークに追加

フォローする