【MOS】【Microsoft Office Excel】【マクロ/VBA】同モジュール内のマクロ間で変数を受け渡す
- 2016/02/24 16:37
- 変数
- 10
同モジュール内のマクロ間で変数を受け渡す方法です。
ある標準モジュール(たとえば「Module1」)に、[作業呼び出し用マクロ]と[作業用マクロ]の2つのマクロがあるとします。
作業呼び出し用マクロで作業用マクロを起動し、作業用マクロで変数を設定し、作業呼び出し用マクロで変更された変数を回収して処理したいとします。
Sub test_Call() '=========================================================== ' 呼び出し用マクロ '=========================================================== ThisWorkbook.Activate '//変数の型 Dim sample As String '//初期値挿入 sample = "山田" '//作業マクロ実行 Call test_Case(sample) '//結果を確認 MsgBox (sample) End Sub Sub test_Case(ByRef sample As String) '=========================================================== ' 作業用マクロ '=========================================================== '//変数に値を設定 sample = "田中" End Sub
上記のようにすると、変更後の変数に格納されている「田中」という文字列がダイアログで表示されます。
気をつけておくポイントは以下のとおりです。
作業呼び出し用マクロで受け渡す変数の型を設定しておく
作業呼び出し用マクロで作業用マクロから受け取る変数の型を設定しておきます。
上記の例でいうと
Dim sample As String
の部分です。
また、初期値が必要な場合は
sample = "山田"
のように設定しておきます。
作業呼び出し用マクロで作業用マクロ実行時に受け取る変数を指定しておく
作業用マクロ呼び出し時に受け渡す変数を指定します。
上記の例でいうと
Call test_Case(sample)
の部分です。
作業用マクロで受け渡す変数を指定しておく
作業用マクロで受け渡す変数及びその型を指定しておきます。
変数の型は、作業呼び出し用マクロで指定した型と同じものにしておいてください。
上記の例でいうと、
Sub test_Case(ByRef sample As String)
の部分です。