宣言 Subステートメント

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。


'Sub プロシージャの名前、引数、およびプロシージャの本体を宣言します。()
'
'構文
'
'[Private | Public | Friend] [StaticSub name [(arglist)]
'[statements]
'[Exit Sub]
'[statements]
'
'End Sub

'Sub ステートメントの構文は、次の指定項目から構成されます。()
'
'指定項目
'Public
'Private
'Friend
'Static
'name
'arglist
'statements
'
'引数 arglist は、次の形式で指定します。
'
'[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]
'
'指定項目
'Optional
'ByVal
'ByRef
'ParamArray
'varname
'type
'defaultvalue
'
'解説
'
'キーワード PublicPrivate、または Friend を指定しない場合、Sub プロシージャは、パブリック プロシージャになります。キーワード Static を指定しない場合、ローカル変数の値は、Sub プロシージャの実行が終了すると破棄されます。キーワード Friend は、クラス モジュール内でのみ使えます。ただし、Friend を指定したプロシージャは、プロジェクト内のすべてのモジュールのプロシージャから呼び出せます。Friend を指定したプロシージャは、親クラスのタイプ ライブラリには書き込まれません。また、実行時バインディングは行えません。
'
'メモ Sub プロシージャは、再帰的に使えます。つまり、そのプロシージャ自体を呼び出して機能を実行できます。ただし、再帰呼び出しを行うと、スタックがオーバーフローする可能性があります。キーワード Static は、通常、再帰的な Sub プロシージャでは使いません。
'
'実行可能なコードは、すべてプロシージャ内に記述する必要があります。また、Sub プロシージャをほかの Sub プロシージャ、Function プロシージャ、Property プロシージャの中では定義できません。
'
'キーワード Exit Sub は、Sub プロシージャを直ちに終了させます。プログラムの実行は、その Sub プロシージャを呼び出したステートメントの次のステートメントから続行されます。Exit Sub ステートメントは、Sub プロシージャ内の任意の場所に、必要に応じていくつでも記述できます。
'
'Function プロシージャと同様に、Sub プロシージャは、引数を受け取り、一連のステートメントを実行して、引数の値を変更します。ただし、値を返す Function プロシージャとは異なり、Sub プロシージャは値を返さないため、式の中には記述できません。
'
'Sub プロシージャを呼び出すには、プロシージャ名の後ろに引数リストを付けて指定します。Sub プロシージャを呼び出す方法については、Call ステートメントを参照してください。
'
'Sub プロシージャで使う変数には、Sub プロシージャ内で明示的に宣言される変数と、それ以外の変数の 2 種類があります。プロシージャ内で Dim などのステートメントで明示的に宣言された変数 (ローカル変数) は、そのプロシージャの中だけで有効です。プロシージャ内で明示的に宣言されていない変数も、そのプロシージャの外部のさらに上のレベルで明示的に宣言されていない限り、ローカル変数となります。
'
'メモ プロシージャ内で明示的に宣言されていない変数をプロシージャ内で使うことも可能ですが、その変数と同じ名前の変数などがモジュール レベルで定義されている場合、名前の競合が発生します。あるプロシージャにおいて、ほかのプロシージャ、定数または変数のいずれかと同じ名前を持つ未宣言の変数を参照した場合、そのモジュール レベルの名前を参照しているものと見なされます。このような名前の競合を避けるためには、変数を明示的に宣言する必要があります。Option Explicit ステートメントを使うと、変数の明示的な宣言が強制されます。
'
'メモ GoSub、GoTo、Return などのステートメントを使って、Sub プロシージャに入ったり、Sub プロシージャから抜けたりすることはできません。
'
'Sub ステートメントの使用例()
'
'次の例は、Sub ステートメントを使って、Sub プロシージャの名前と引数を宣言し、プロシージャのコードを記述しています。

Sub プロシージャを定義します。
' 2 つの引数を持つ Sub プロシージャになります。
Sub SubComputeArea(Length, TheWidth)
    Dim Area As Double        ' ローカル変数を宣言します。
    If Length = 0 Or TheWidth = 0 Then
        ' いずれかの変数の値が 0 の場合
        Exit Sub            Sub プロシージャを直ちに終了します。
    End If
    Area = Length * TheWidth    ' 四角形の面積を計算します。
    Debug.Print Area        ' 面積をデバッグ ウィンドウに表示します。
End Sub

 

2000年01月01日|[VBサンプルコード]:[宣言]