変数の適用範囲は、変数を宣言する際に指定します。変数の適用範囲にはプロシージャ、プライベート(モジュール)、およびパブリックの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