Microsoft Access Club >VBA物語 >このページ  サイト内検索


Static ステートメント:VBA物語Help



Static ステートメントは、変数を宣言しそれらにメモリ領域を割り当てます。プロシージャ レベルで使用します。 Static ステートメントで宣言した変数 (静的変数) の値は、プログラムが実行されている間をとおして保持されます。

基本構文

Static varname[([subscripts])] [As [New] type] 
				[, varname[([subscripts])] [As [New] type]] 

Static ステートメントの構文は、次の指定項目から構成されます。

指定項目 内容
varname 必ず指定します。

宣言する変数の名前です。変数の標準的な名前付け規則に従って指定します。

subscripts 省略可能です。

配列変数の次元を指定します。指定できる次元数の最大値は 60 です。引数 subscripts の構文は次のとおりです。

[lower To] upper [,[lower To] upper] . . .

引数 lower を省略すると、配列の添字の最小値は Option Base ステートメントによって制御されます。Option Base ステートメントが記述されていない場合、添字の最小値は 0 になります。

New 省略可能です。

このキーワードを指定すると、オブジェクトを暗黙的に作成できます。オブジェクト変数を宣言するときにキーワード New を指定すると、オブジェクトを最初に参照したときにオブジェクトの新しいインスタンスが作成されるので、Set ステートメントを使ってオブジェクトへの参照を代入する必要はありません。キーワード New を使用して固有のデータ型の変数を宣言したり、従属オブジェクトのインスタンスを宣言することはできません。

type 省略可能です。

変数のデータ型を指定します。バイト型 (Byte)、ブール型 (Boolean)、整数型 (Integer)、長整数型 (Long)、通貨型 (Currency)、単精度浮動小数点数型 (Single)、倍精度浮動小数点数型 (Double)、10 進型 (Decimal) (現在はサポートされていません)、日付型 (Date)、文字列型 (String) (可変長の場合は String、固定長の場合は String * length)、オブジェクト型 (Object)、バリアント型 (Variant)、ユーザー定義型、またはオブジェクトの種類のいずれかを指定できます。As type 節は宣言する各変数に対して個別に指定します。

解説

  1. モジュール内のコードが実行されると、Static ステートメントで宣言された変数の値は、モジュールがリセットされるか再実行されるまで、保持されます。
  2. プロシージャ内だけで参照可能な変数を明示的に宣言するには、静的でないプロシージャ (キーワード Static を指定しないで定義したプロシージャ) の中で Static ステートメントを使って宣言します。ただし、この変数の保持期間は、プロシージャが定義されているモジュールと同じになります。
  3. プロシージャが呼び出されている間、値を保持する変数のデータ型を宣言するには、プロシージャの中で Static ステートメントを使って宣言します。たとえば、次のステートメントは整数型で固定サイズの配列を宣言します。

    Static EmployeeNumber(200) As Integer

  4. 次のステートメントでは、ワークシートの新しいインスタンスとして変数を宣言しています。

    Static X As New Worksheet

  5. オブジェクト変数を宣言するときにキーワード New を指定しない場合は、オブジェクトを参照する変数を使用する前に、Set ステートメントを使用して変数に既存のオブジェクトを代入する必要があります。
  6. 宣言したオブジェクト変数にオブジェクトが代入されるまで、その変数には Nothing という特殊な値が設定されます。
  7. Nothing は、その変数がオブジェクトの特定のインスタンスを参照していないことを示します。
  8. 宣言部分でキーワード New を使用すると、オブジェクトのインスタンスはオブジェクトを最初に参照したときに作成されます。
  9. データ型やオブジェクトの種類を指定せず、モジュール内に Deftype ステートメントの記述がない場合、変数のデータ型は既定のバリアント型 (Variant) になります。

留意事項

  1. Static ステートメントとキーワード Static は似ていますが、用途が異なります。
  2. キーワード Static で "Static Sub CountSales ()" のようにプロシージャを宣言すると、そのプロシージャ内のすべてのローカル変数のメモリ領域は一度だけ割り当てられて、変数の値はプログラムの実行中は保持されます。
  3. 静的ではないプロシージャの場合、変数のメモリ領域はプロシージャが呼び出されるたびに割り当てられて、プロシージャの終了時に解放されます。
  4. Static ステートメントは、静的でないプロシージャ内のローカル変数の宣言に使われて、プログラムを実行している間、ローカル変数の値を保持します。
  5. 変数の初期化時には、数値変数は 0 に、可変長文字列は長さ 0 の文字列 ("") に初期化され、固定長文字列には 0 が埋められます。
  6. また、バリアント型 (Variant) 変数は、Empty 値に初期化されます。ユーザー定義型変数の各要素は、個別の変数として初期化されます。
  7. プロシージャ内で Static ステートメントを使用する場合は、通常、Dim ステートメントなどのほかの宣言ステートメントと共に、プロシージャの最初に記述します。

ページの先頭へ 前ページへ戻る

 


Static ステートメント:VBA物語Help


 

-Microsoft Access Club-