今回は、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 |