【ACCESS VBA】値渡しと参照渡しの違いを比較する

訪問して頂きありがとうございます。まさふくろーです。

この記事では、値渡しと参照渡しの違いについてご紹介します。

値渡しと参照渡しの違いについて

項目 キーワード 説明
値渡し
ByVal
「値のコピー」を渡します。
したがって、受け取った引数の値を変更しても、呼び出し元のプロシージャに影響はありません。
参照渡し
ByRef
「値の参照先」を渡します。
参照先とは、メモリ上のどの場所に値が格納されているかという情報です。
そのため値を変更すると、呼び出し元のプロシージャに影響します。
キーワードを省略した場合は、参照渡しになります。

サンプルプログラムで比較する

呼び出し元のプロシージャ

1 呼び出し元のプロシージャ「Sample1」を作成。
3 Byval検証用変数「a」(文字列型)を宣言。
4 ByRef検証用変数「b」(文字列型)を宣言。
6 文字列「ByVal元」を変数「a」に代入。
7 文字列「ByRef元」を変数「b」に代入。
9
プロシージャ「Sample1_1」を呼び出す。
引数:Byval検証用変数「a」、ByRef検証用変数「b」。
11 プロシージャ「Sample1_1」を呼び出した後の変数「a」「b」の値の変化をメッセージボックスに表示する。

呼び出し先のプロシージャ

1
呼び出し先のプロシージャ「Sample1_1」を作成。
引数:a(値渡しの変数)、b(参照渡しの変数)。
3 値渡しの変数「a」に文字列「ByVal変更」を代入。
4 参照渡しの変数「b」に文字列「ByRef変更」を代入。

実行結果

変数 説明
a(値渡し)
プロシージャ「Sample1_1」内で値を変更しても、呼び出し元の値は変わらない。
b(参照渡し) プロシージャ「Sample1_1」内で値を変更した場合、呼び出し元の値も変わる。

最後まで読んでいただき、ありがとうございました!