モジュール変数・パブリック変数
プロシージャの中で宣言した変数は、宣言したプロシージャの内でしか使用できません。このような変数を「ローカル変数」と呼びます。
しかし、ときには複数のプロシージャで同じ変数を使いたいこともあります。1つのモジュール内にあるすべてのプロシージャで同じ変数を使えるようにするには、モジュール内の「宣言セクション」で変数を宣言します。
「宣言セクション」とは、モジュールの先頭から最初のSubプロシージャまたはFunctionプロシージャまでの間です。
予想通り、モジュール変数は他のモジュールで使用できません。まず、この点を理解してください。
では、すべてのモジュールで使用できる変数を宣言するときは、どうしたらいいのでしょう。それには「Public」という命令を使って変数を宣言します。
ただ、今回はモジュール変数を利用します。
【練習問題11】
文字列変数「str」が同一モジュール内で使用できるように宣言をして、確認できるプログラムを作成します。
サンプルデータvba-exercises.xlsm「VBA練習問題」をダウンロードして保存しておいてください。
【解答例】
- Option Explicit
- Dim str As String 'モジュール変数:文字列型の変数を宣言する
- Sub 練習問題11()
- str = "呼び出しプログラムの勉強" '変数に"呼び出しプログラムの勉強"という文字を入れる
- Call Sample02 'プロシージャ「Sample02」を実行する
- End Sub
- Sub Sample02()
- MsgBox str '変数の値を表示する
- End Sub
【参考】
モジュールには「標準モジュール」のほかに「クラスモジュール」、ワークシートごとに対応した「シートモジュール」、ブックに対応した「ブックモジュール」そしてフォームに付属した「フォームモジュール」があります。