次の方法で共有


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 でイベント ハンドラを呼び出す

概念

Visual Basic におけるプロシージャ

Function プロシージャ

Property プロシージャ

演算子プロシージャ

プロシージャのパラメータと引数

参照

Sub ステートメント (Visual Basic)