◆変数やプロシージャーなどの有効範囲(スコープレベル)
変数やプロシージャーなどには有効範囲(スコープレベル)があります。 変数は何処からでもその変数が使えるわけではありません。 変数やプロシージャーの頭に 「Public」 や 「Private」 がついているのを 見たことありませんか。 有効範囲(スコープレベル)は、「Public」 や 「Private」の宣言 と 記述する場所で、 その有効範囲が異なります。 ここでの解説やサンプルアプリケーションでは、この辺のスコープレベルは適当に 記述してありますが、本来はキチンと意識してコーディングすべきものです。 しかし、プロではないので、曖昧にしています。 @プロシージャー内だけで使用できる変数 「プロシージャーレベル」
Private Sub test1()
Dim point As Integer
point = 100
End Sub
Dim point As Integer
point = 100
End Sub
変数の多くはプロシージャー内で宣言しますが、この変数は宣言した プロシージャー内だけしか使えません。 A同じモジュール内で使用できる変数 「モジュールレベル」
Module1
Option Explicit
Private counter As Integer
Private counter As Integer
Private Sub test2()
counter = counter + 1
End Sub
counter = counter + 1
End Sub
Private Sub test3()
counter = counter + 1
End Sub
counter = counter + 1
End Sub
同じモジュール内ならば、複数のプロシージャーで使用できます。 B複数のモジュールで使用できる変数 「グローバルレベル」
Module1
Option Explicit
Public counter As Integer
Public counter As Integer
Public Sub test4()
counter = counter + 1
End Sub
counter = counter + 1
End Sub
Module2
Public Sub test5()
counter = counter + 1
End Sub
counter = counter + 1
End Sub
複数のモジュールにまたがたプロシージャーで使用できます。 C同じモジュール内だけで Call できるプロシージャー「モジュールレベル」 プロシージャーにも変数と同様の事が言えます。
Module1
Private Sub test6()
test7
End Sub
test7
End Sub
Private Sub test7()
.....
End Sub
.....
End Sub
Dモジュールを越えて Call できるプロシージャー 「グローバルレベル」
Module1
Public Sub test8()
test9
End Sub
test9
End Sub
Module2
Public Sub test9()
.....
End Sub
.....
End Sub