変数の適用範囲は、変数を宣言する際に指定します。変数の適用範囲にはプロシージャ、プライベート(モジュール)、およびパブリックの3種類があります。
プロシージャレベルの変数はプロシージャの範囲でのみ有効となります。
Sub Sample1()
Dim i As Integer
i = 1
Msgbox i
End Sub
プライベート(モジュール)レベルの変数はモジュールの範囲でのみ有効となります。プライベートレベルの変数は、Privateステートメントで次のように宣言します。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