次の方法で共有


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

更新 : 2007 年 11 月

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

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

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

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

  2. 各宣言の Sub キーワードまたは Function キーワードの前に、Overloads キーワードを指定します。宣言内の 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 におけるプロシージャ

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

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

オーバーロードの解決法