方法: プロシージャの複数のバージョンを定義する (Visual Basic)

プロシージャはオーバーロードすることによって、複数のバージョンを定義できます。オーバーロードでは各バージョンとも同じ名前を使用しますが、パラメーター リストはそれぞれ異なります。プロシージャをオーバーロードする目的は、互いに密接な関係にある複数のバージョンのプロシージャを、名前で区別せずに定義することにあります。

詳細については、「プロシージャのオーバーロード (Visual Basic)」を参照してください。

プロシージャの複数のバージョンを定義するには

  1. 定義するプロシージャの各バージョンに、Sub 宣言ステートメントまたは Function 宣言ステートメントを記述します。すべての宣言に同じプロシージャ名を使います。

  2. 各宣言の Sub キーワードまたは Function キーワードの前に、Overloads (Visual Basic) キーワードを指定します。宣言内の Overloads の指定は省略可能ですが、いずれかの宣言に指定した場合、すべての宣言に指定することが必要になります。

  3. 各宣言ステートメントの後に、特定のケースを処理するプロシージャ コードを記述します。呼び出し元のコードで指定される引数が、そのバージョンのパラメーター リストと一致するようにしてください。呼び出し元のコードでどのパラメーターが指定されたかを調べるコードは必要ありません。Visual Basic によって、一致するプロシージャのバージョンに制御が渡されます。

  4. プロシージャの各バージョンを End Sub ステートメントまたは End Function ステートメントで適切に終了します。

使用例

Sub プロシージャを定義し、顧客の残高に対してトランザクションをポストする例を次に示します。Overloads キーワードを指定して、プロシージャのバージョンを 2 つ定義しています。1 つは顧客を名前で受け取り、もう 1 つは口座番号で受け取ります。

Overloads Sub post(ByVal custName As String, ByVal amount As Single)
    ' Insert code to access customer record by customer name.
End Sub
Overloads Sub post(ByVal custAcct As Integer, ByVal amount As Single)
    ' Insert code to access customer record by account number.
End Sub

呼び出し元のコードでは、顧客 ID を文字列 (String) または数値 (Integer) で取得しますが、どちらの場合でも同じ呼び出しステートメントを使用できます。

これらのバージョンの post プロシージャを呼び出す方法については、「方法: オーバーロードされたプロシージャを呼び出す (Visual Basic)」を参照してください。

コードのコンパイル

オーバーロードされた各バージョンは、プロシージャ名は同じでもパラメーター リストが違う点に注意してください。

参照

処理手順

プロシージャのトラブルシューティング (Visual Basic)

方法: 省略可能なパラメーターを受け取るプロシージャをオーバーロードする (Visual Basic)

方法: 不特定数のパラメーターを受け取るプロシージャをオーバーロードする (Visual Basic)

概念

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

プロシージャのパラメーターと引数 (Visual Basic)

プロシージャのオーバーロードに関する注意事項 (Visual Basic)

オーバーロードの解決法 (Visual Basic)