ほとんどの場合、プロシージャは呼び出された状況に関する情報を持っている必要があります。 反復的なタスクや共有タスクを実行するプロシージャでは、呼び出しごとに異なる情報を使用します。 この情報は、呼び出し時にプロシージャに渡す変数、定数、式で構成されます。
この情報をプロシージャに伝えるために、プロシージャは パラメーターを定義し、呼び出し元のコードはそのパラメーターに 引数 を渡します。 パラメーターは駐車スペース、引数は自動車と考えることができます。 異なる自動車が異なるタイミングで駐車スペースに駐車できるのと同様に、呼び出し元コードはプロシージャを呼び出すたびに同じパラメーターに異なる引数を渡すことができます。
パラメーター
パラメーターは、プロシージャが呼び出すときに渡すことが期待される値を表します。 プロシージャの宣言でパラメーターを定義します。
Function
またはSub
プロシージャを定義するときは、プロシージャ名の直後にかっこで囲まれたパラメーター リストを指定します。 パラメーターごとに、名前、データ型、および渡しメカニズム (ByVal または ByRef) を指定します。 パラメーターが省略可能であることを示すこともできます。 つまり、呼び出し元のコードに値を渡す必要はありません。
各パラメーターの名前は、プロシージャの ローカル変数 として機能します。 パラメーター名は、他の変数を使用するのと同じ方法で使用します。
論争
引数は、プロシージャを呼び出すときにプロシージャ パラメーターに渡す値を表します。 呼び出し元のコードは、プロシージャを呼び出すときに引数を指定します。
Function
またはSub
プロシージャを呼び出すときは、プロシージャ名の直後に引数リストをかっこで囲みます。 各引数は、リスト内の同じ位置にあるパラメーターに対応します。
パラメーター定義とは異なり、引数には名前がありません。 各引数は式であり、0 個以上の変数、定数、およびリテラルを含めることができます。 評価される式のデータ型は、通常、対応するパラメーターに対して定義されているデータ型と一致する必要があり、いずれの場合もパラメーター型に変換できる必要があります。
こちらも参照ください
.NET