次の方法で共有


方法 : プロシージャにパラメータを定義する

更新 : 2007 年 11 月

パラメータ は、呼び出し元のコードが値をプロシージャに渡すために使用します。プロシージャのパラメータを宣言する場合には、変数を宣言するときと同じように、パラメータの名前とデータ型を指定します。また、渡す方法や、パラメータを省略できるかどうかも指定できます。

詳細については、「プロシージャのパラメータと引数」を参照してください。

プロシージャのパラメータを定義するには

  1. プロシージャの宣言中に、プロシージャのパラメータ一覧に、他のパラメータとの間をコンマで区切ってパラメータ名を追加します。

  2. パラメータのデータ型を決定します。

  3. パラメータ名の後に As 句を入力し、データ型を指定します。

  4. パラメータの渡し方を決定します。通常、パラメータは値によって渡されますが、呼び出し元のコード内の値をプロシージャが変更できるように指定することもできます。

  5. パラメータ名の前には ByVal または ByRef を指定して、渡し方を指定します。詳細については、「引数の値渡しと参照渡しの違い」を参照してください。

  6. パラメータが省略可能である場合、渡し方の前に Optional (Visual Basic) を指定して、パラメータのデータ型の後に等号 (=) と既定値を指定します。

    次の例では、3 つのパラメータを持つ Sub プロシージャの骨組みを定義します。最初の 2 つのパラメータは必須で、3 つ目は省略可能です。パラメータの一覧の中で、各パラメータの定義はコンマで区切られます。

    Sub updateCustomer(ByRef c As customer, ByVal region As String, _
      Optional ByVal level As Integer = 0)
      ' Insert code to update a customer object.
    End Sub
    

    最初のパラメータは customer オブジェクトを受け入れ、引数は ByRef で渡されているので、updateCustomer は c に渡された変数を直接更新できます。最後の 2 つの引数は ByVal で渡されているので、プロシージャはこれらの値を変更することはできません。

    呼び出し元のコードに level パラメータの値が指定されていない場合、Visual Basic はこれを既定値である 0 に設定します。

    型チェックのスイッチ (Option Strict ステートメント) が Off の場合、パラメータの定義時に As 句を省略できます。しかし、いずれかのパラメータが As 句を使用している場合は、すべてのパラメータがこれを使用する必要があります。型チェックのスイッチが On の場合、As 句はすべてのパラメータ定義で必須です。

    すべてのプログラミング要素についてデータ型を指定することは、厳密な型指定と呼ばれます。Option Strict On を設定した場合、Visual Basic は厳密な型指定を強制します。これは、次の理由で強く推奨されています。

    • 変数に対する IntelliSense サポートが有効になります。これにより、コードの入力時に、プロパティや他のメンバを表示できます。

    • コンパイラで型チェックを実行できます。これは、実行時にオーバーフローなどのエラーで失敗するステートメントを検出するのに役立ちます。また、オブジェクトでサポートされていないメソッドの呼び出しも検出されます。

    • コードの実行速度が速くなります。この理由の 1 つは、プログラミング要素にデータ型を指定しなかった場合、Visual Basic コンパイラが Object タイプを割り当てるためです。コンパイル済みのコードが、Object および他のデータ型との間で変換を行う必要がある場合、パフォーマンスが低下します。

参照

処理手順

方法 : プロシージャに引数を渡す

概念

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

Sub プロシージャ

Function プロシージャ

引数の値渡しおよび参照渡し

再帰プロシージャ

プロシージャのオーバーロード

その他の技術情報

Visual Basic におけるオブジェクト指向プログラミング