“Call”ステートメントで取得した変数を他のbookでも使いたい。【VBA】

目次

経緯

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”で宣言するとうまくいきました。

グローバル変数は、すべてのモジュールでアクセス可能な変数であり、プロシージャや関数の外部に宣言されます。グローバル変数を使用すると、その変数に代入された値は、他のブックやモジュールからも参照できます。

参考になれば、幸いです。

ここまで読んでいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次