変数の有効期間について

変数が値を保持し続ける期間は、変数の有効期間 (または寿命) と呼ばれています。 変数の値は有効期間の間に変化することがありますが、変数が何かの値を保持していることに変わりはありません。 変数が スコープを失うと、その変数は値を持たなくなります。

プロシージャの実行が始まるとき、すべての変数が初期化されます。 数値変数は 0 に初期化され、可変長文字列は長さ 0 の文字列 ("") に初期化され、固定長文字列には ASCII 文字コード 0 または Chr( 0) で表される文字が入力されます。 バリアント型 (Variant) の変数は Empty に初期化されます。 ユーザー定義型の変数の各要素は、別々の変数のように初期化されます。

オブジェクト変数を宣言すると、メモリ内の領域が予約されますが、Set ステートメントを使用してオブジェクト参照を割り当てるまで、その値は Nothing に設定されます。

コードの実行中に変数の値が変更されない場合、その変数はスコープを失うまで初期化されたときの値を保持し続けます。

Dim ステートメントで宣言されたプロシージャ レベルの変数は、プロシージャの実行が完了するまで値を保持します。 そのプロシージャが他のプロシージャを呼び出した場合、その変数はそれらのプロシージャが実行されている限り値を保持し続けます。

Static キーワードを使用してプロシージャ レベルの変数が宣言されている場合、コードが任意のモジュールで実行されている限り、変数はその値を保持します。 すべてのコードの実行が終わると、その変数はスコープと値を失います。 プロシージャ レベル変数有効期間は、モジュール レベル変数と同じです。

モジュール レベル変数は、静的変数とは異なります。 モジュール レベル変数は、標準モジュールまたはクラス モジュールでは、コードの実行を停止するまで値を保持し続けます。 クラス モジュールでは、そのクラスのインスタンスが存在する限り値を保持し続けます。 モジュール レベル変数は、値をリセットするまでメモリ リソースを消費するので、必要なときにだけ使用してください。

Sub ステートメントまたは Function ステートメントの前に Static キーワードを含める場合、プロシージャ内のすべてのプロシージャ レベル変数の値は呼び出し間で保持されます。

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。