参照渡しと値渡しの違い 参照渡しと値渡しを簡単におさらいすると、関数の引数につけるキーワードのByRefとByValのことを指し、ByRefを付けるか省略した場合は参照渡しの引数として扱い、ByValを付けた場合は値渡しの引数になります。 で、本題の参照渡しと値渡しの違いですが、関数(プロシージャ、メソッド)の中で変更した引数の「値」を呼び出し元に引き継がれるかどうか、という点です。 参照渡し(ByRef)の場合は関数内部で変数に加えた変更が呼び出し元でも引き継がれますが、値渡し(ByVal)の場合は引き継がれず、関数を呼び出したときの値のままです。 ただ、引数がプリミティブ型とオブジェクト型でByValを付けたときの挙動が変わるため注意が必要です。 このページでは特にその注意点について記述しています。 構文 プロシージャの構文は以下になります。 Sub プロシージャ名([ByRef(省略