Sub プロシージャ
更新 : 2007 年 11 月
Sub プロシージャは、Sub ステートメントと End Sub ステートメントで囲まれた一連の Visual Basic ステートメントです。Sub プロシージャはタスクを実行した後、呼び出し元のコードに制御を返しますが、呼び出し元のコードに値を返すことはありません。
プロシージャが呼び出されるたびに、Sub ステートメント後の最初の実行可能なステートメントから、最初の End Sub、Exit Sub、または Return ステートメントまでの一連のステートメントが実行されます。
Sub プロシージャは、モジュール、クラス、および構造体に定義できます。既定では Public に設定されます。つまり、プロシージャを定義したモジュール、クラス、または構造体へのアクセスが可能なアプリケーション内のどこからでも呼び出すことができます。メソッドとは、それが定義されているモジュール、クラス、または構造体の外部からアクセスすることのできる Sub プロシージャまたは Function プロシージャのことです。詳細については、「クラス メソッド」を参照してください。
また、Sub プロシージャは、呼び出し元のコードによって渡される定数、変数、式などの引数を受け取ることができます。
宣言の構文
Sub プロシージャを宣言する構文は次のとおりです。
[modifiers] Sub subname[(parameterlist)]
' Statements of the Sub procedure.
End Sub
modifiers にはアクセス レベルの他、オーバーロード、オーバーライド、共有、およびシャドウに関する情報を指定できます。詳細については、「Sub ステートメント (Visual Basic)」を参照してください。
パラメータ宣言
プロシージャの各パラメータは、パラメータ名とデータ型を指定するという、変数を宣言するのと似た方法で宣言します。また、引数渡しの方法およびパラメータを省略できるかどうか、パラメータ配列かどうかも指定できます。
パラメータ リストの各パラメータの構文は次のとおりです。
[Optional] [ByVal | ByRef] [ParamArray] parametername As datatype
パラメータを省略可能にする場合は、宣言内で既定値を指定する必要があります。既定値を指定する構文は次のとおりです。
Optional [ByVal | ByRef] parametername As datatype = defaultvalue
ローカル変数として扱われるパラメータ
制御がプロシージャに渡ると、各パラメータはローカル変数として扱われます。つまり、その有効期間はプロシージャの有効期間と同じで、スコープはプロシージャ全体になります。
呼び出し構文
Sub プロシージャは、スタンドアロンの呼び出しステートメントを使って明示的に呼び出す必要があります。式の中で名前を使って呼び出すことはできません。省略できないすべての引数の値を指定し、引数リストをかっこで囲む必要があります。指定する引数がない場合は、かっこを省略することもできます。Call キーワードは省略できますが、指定することが推奨されています。
Sub プロシージャを呼び出す構文は次のとおりです。
[Call] subname[(argumentlist)]
Sub メソッドは、それが定義されているクラスの外部から呼び出すことができます。まず、New キーワードを使用してクラスのインスタンスを作成するか、クラスのインスタンスを返すメソッドを呼び出す必要があります。詳細については、「方法 : New キーワードを使用する」を参照してください。その後、次の構文を使用することで、インスタンス オブジェクトの Sub メソッドを呼び出すことができます。
Object.methodname[(argumentlist)]
詳細については、「方法 : メソッドを使用してアクションを実行する」を参照してください。
宣言と呼び出しの例
次の Sub プロシージャは、アプリケーションが実行しようとしているタスクとタイム スタンプを表示します。アプリケーションでは、さまざまな場所から tellOperator を呼び出すことができるため、すべてのタスクの先頭にこのコードを複製する必要はありません。呼び出し時には、引数 task で文字列が渡されます。この文字列によって、開始されようとしているタスクが確認されます。
Sub tellOperator(ByVal task As String)
Dim stamp As Date
stamp = TimeOfDay()
MsgBox("Starting " & task & " at " & CStr(stamp))
End Sub
tellOperator を呼び出す一般的な例を次に示します。
Call tellOperator("file update")
参照
処理手順
方法 : Visual Basic でイベント ハンドラを呼び出す