変数の適用範囲は、変数を宣言する際に指定します。

変数の適用範囲にはプロシージャ、プライベート(モジュール)および、パブリックの3種類があります。

下記のようにプロシージャ内レベルの変数は、プロシージャの範囲内でのみ変数が有効となります。

Sub Sample1()

	Dim i As Integer

	i = 1

	Msgbox i

End Sub
	

下記のようにプライベート(モジュール内)レベルの変数は、モジュールの範囲内で変数が有効と成る。

プライベートレベルの変数は、Privateステートメントで宣言する必要がある。

Praivateステートメントを記述しない場合も、自動的にPrivate変数になります。


'Module1

Private i As Integer
Dim j As Integer      'Privateを省略した場合

Sub Sample()

	Call Sample1
	Call Sample2

	Msgbox i	'---iは3となる

End Sub
Sub Sample1()

	i = 1

End Sub
Sub Sample2()

	i = i + 2	

End Sub

下記のようにパブリックレベルの変数は、変数有効範囲が最も広く、他のモジュールでもパブリック変数を共有して使うことができます。

'---Module1

Public i As Integer 'パブリックモジュールレベルの変数宣言

Sub Sample()

    i = 3

    Call Sample1
    Call Sample2

    Msgbox i	'---iは5となる

End Sub
Sub Sample2()

    i = i + 1

End Sub

'---Module2

Public Sub Sample3()

    i = i + 1

End Sub