Microsoft® Visual Basic® Scripting Edition Sub ステートメント |
ランゲージ リファレンス
|
Sub プロシージャの名前、引数を宣言し、Sub プロシージャの始まりを示します。
[Public | Private] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
Sub ステートメントの構文は、次の指定項目から構成されます。
指定項目 内容 Public すべてのスクリプトのすべてのプロシージャから参照できる Sub プロシージャを宣言するときに指定します。 Private Sub プロシージャを記述したスクリプト内のプロシージャ内からのみ参照できるプロシージャを宣言するときに指定します。 name 定義する Sub プロシージャの名前を指定します。変数の標準的な名前付け規則に従って名前を付けます。 arglist Sub プロシージャを呼び出すときに、Sub プロシージャに渡す引数を表す変数のリストを指定します。複数の変数を指定するときは、カンマ (,) で区切ります。 statements Sub プロシージャ内で実行される、一連のステートメントを指定します。
引数 arglist の構文と指定項目は次のとおりです。
[ByVal | ByVal] varname[( )]
指定項目 内容 ByVal その引数が、値渡しで渡されることを示します。 ByRef その引数が、参照渡しで渡されることを示します。 varname 引数として渡す変数名を指定します。変数の標準的な名前付け規則に従って名前を付けます。
キーワード Public または キーワード Private を指定しない場合、Sub プロシージャは既定のパブリック プロシージャとなり、スクリプト内の他のすべてのプロシージャから参照できます。Sub プロシージャ内のローカル変数の値は、プロシージャの実行が終了すると破棄されます。実行可能なコードはすべてプロシージャ内に記述する必要があります。 また、Sub プロシージャを他の Function プロシージャ、または Sub プロシージャの中で定義することはできません。
Exit Sub ステートメントは、Sub プロシージャを直ちに終了します。プログラムの実行は、その Sub プロシージャを呼び出したステートメントの次のステートメントから継続されます。Exit Sub ステートメントは、Sub プロシージャ内の任意の場所に必要に応じていくつでも指定できます。
Sub プロシージャと Function プロシージャには、似た点と異なる点があります。引数を受け取って一連のステートメントを実行し、引数の値を変えることができる点は似ています。しかし、Sub プロシージャは、値を返す Function プロシージャと異なり、値を返さないため、式の中に記述することはできません。
Sub プロシージャを呼び出すには、プロシージャ名の後ろに引数リストを付けて指定します。Sub プロシージャの呼び出し方法については、Call ステートメントを参照してください。
注意 Sub プロシージャは、再帰的にプロシージャ自体を呼び出すことができます。ただし、再帰呼び出しを行うと、スタックがオーバーフローする可能性があります。
Sub プロシージャで使う変数には、Sub プロシージャ内で明示的に宣言される変数と、それ以外の変数の 2 種類があります。プロシージャ内で Dim ステートメントなどを使って明示的に宣言された変数は、そのプロシージャの中だけで有効なローカル変数になります。プロシージャ内で明示的に宣言されていない変数も、そのプロシージャの外部のさらに上のレベルで明示的に宣言されていない限りは、ローカル変数となります。
注意 プロシージャ内で明示的に宣言されていない変数をプロシージャ内で使うことはできますが、その変数と同じ名前の変数などがスクリプト レベルで定義されている場合、名前の競合が発生します。 あるプロシージャが、他のプロシージャ、定数または変数と同じ名前を持つ未宣言の変数を参照した場合、そのプロシージャはスクリプト レベルの名前を参照しているものとみなされます。このような名前の競合を避けるために、変数は明示的に宣言してください。Option Explicit ステートメントを使うと、変数の明示的な宣言が強制されます。