目次
経緯
VBAでモジュールを二つ「module1」「module2」と作り、「module2」で「module1」で取得した変数を使いたいと思い今回勉強しました。
グローバル変数を使う
まず、ダメだったプログラムを書きます。
'module1 Sub MySub() Dim myBar as String '変数に値を代入する myVar = "Hello, World!" End Sub 'module2 Sub MyOtherSub() Call Mysub() MsgBox myVar End Sub
“Call”ステートメントで呼び出したサブルーチン内で定義された変数は、サブルーチンが終了すると同時に破棄されるようです。
今度はうまくいったプログラムを書きます。
'module1 'グローバル変数を定義する Public MyVar as String Sub MySub() '変数に値を代入する myVar = "Hello, World!" End Sub 'module2 Sub MyOtherSub() Call Mysub() MsgBox myVar End Sub
こんな感じでSub()の外に”Public”で宣言するとうまくいきました。
グローバル変数は、すべてのモジュールでアクセス可能な変数であり、プロシージャや関数の外部に宣言されます。グローバル変数を使用すると、その変数に代入された値は、他のブックやモジュールからも参照できます。
参考になれば、幸いです。
ここまで読んでいただきありがとうございました。