Chapter2-13 | 適用範囲(スコープ) | |||
以下に、スコープの例をいくつか説明します。 ここでのポイントは「Public」と「Private」です。前者は広範囲のスコープを持ち、後者はある限られたスコープとなります。これらを特に指定しない場合も、自動的にいずれかのスコープとなります(基本的にはPublicかPrivateを明示した方がよい)。 ■プロシージャ内の変数/定数 Sub Sample_Proc()
Dim strData As String Dim iintLoop As Integer Const PAI = 3.14 〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜 End Sub プロシージャ内で宣言された変数や定数は、そのプロシージャ内でのみ有効です。呼び出されるたびに初期化(数値はゼロ、文字列は長さゼロ)され、プロシージャを抜けるとすべて破棄されます。 ■Static宣言された変数 Sub Sample_Proc()
Static strData As String 〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜 End Sub 「Static」で宣言された変数は、そのプロシージャ内でのみ有効です。ただし、そこで代入された値はプロシージャを抜けても保持されており、再呼び出ししたときも、初期化されずに前回終了時の値となっています。 ■標準モジュールのDeclarationsセクションでPublic宣言された変数/定数 Option Compare Database
Option Explicit Public pstrData As String Public Const PAI = 3.14 そのモジュール内はもとより、フォーム/レポート、他の標準モジュールからも、その名前のまま、参照や代入が可能です。 ■標準モジュールのDeclarationsセクションでPrivate宣言された変数/定数 Option Compare Database
Option Explicit Private pstrData As String Private Const PAI = 3.14 Dim iintLoop As Integer Const ERRNUM = 3 そのモジュール内でのみ有効です。同じモジュール内であれば、どのプロシージャからも参照・代入が可能ですが、他のモジュールからは扱えません。DimやConstのみで宣言された場合も、Privateと同じ扱いとなります。 ■標準モジュールでPublic宣言されたプロシージャ Public Sub Sample_Proc()
〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜 End Sub フォームやレポートを含む、データベース内のすべてのモジュールから呼び出し可能です。Functionプロシージャであれば、クエリの演算フィールドから呼び出すこともできます。Publicを省略しても同様の扱いになります。 ■標準モジュールでPrivate宣言されたプロシージャ Private Sub Sample_Proc()
〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜 End Sub そのモジュール内からのみ呼び出し可能です。 ■フォーム等のクラスモジュールでPublic宣言された変数やプロシージャ Option Compare Database
Option Explicit Public pstrData As String Public Sub Sample_Proc() 〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜 End Sub これらは、変数やプロシージャ名の前にクラスモジュール名を付けることで、他のモジュールから参照や代入が可能となります。たとえば”顧客マスタ”フォームのモジュールであれば、「Form_顧客マスタ.pstrData」や「Form_顧客マスタ.Sample_Proc」のように指定することで呼び出すことができます。(クラスモジュールについては後述します) ■フォーム等のクラスモジュールでPrivate宣言された変数やプロシージャ Option Compare Database
Option Explicit Private pstrData As String Private Sub Sample_Proc() 〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜 End Sub そのクラスモジュール内でのみ有効です。PublicもPrivateも付けない場合、変数/定数はPrivateの扱いになり、プロシージャはPublicの扱いになります。 |
||||
|
Copyright © T'sWare All rights reserved |