コース: Excel VBA 基本講座

今すぐコースを受講しましょう

今すぐ登録して、23,700件以上登録されている、業界エキスパート指導のコースを受講しましょう。

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

参照渡しと値渡しについて - Microsoft Excelのチュートリアル

コース: Excel VBA 基本講座

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

このレッスンでは プロシージャにおける 引数の渡し方である 参照渡しと値渡しについて またその動作の違いについて 解説をします。 まず参照渡しと値渡しについて お伝えします。 参照渡しの場合は 渡す変数と受け取った変数は 同じメモリの場所を 参照します。 値渡しの場合は 渡す変数と受け取った変数は 別のメモリを確保し、値のみを コピーして使用する渡し方です。 参照渡しで引数を受け取る場合は プロシージャで引数を受け取る 変数の前に 「ByRef」という キーワードを記述します。 値渡しで引数を受け取る場合は プロシージャで引数を 受け取る変数の前に 「ByVel」という キーワードを記述します。 ByRef、ByVel ともに 省略をした場合は ByRef、つまり参照渡しとなる 点に注意してください。 では実際に VBE で参照渡しと 値渡しの違いについて 見ていきましょう。 テスト用の function プロシージャを 作成します。 「f」というプロシージャ名で 整数を引数として受け取り 「b」という変数で取り扱います。 プロシージャとしては 戻り値を整数で返すものとします。 内部の処理ですが、受け取った 変数を「 1」をして 戻り値として返すという シンプルなものです。 この場合 ByVal、ByRef ともに 省略をしてますので ByRef 参照渡しとなっている点に 注意をしてください。 続いて呼び出す側のテスト プロシージャを作成しましょう。 「a」という変数を用意し ここに「5」という数値を代入します。 Function プロシージャ「f」に 「a」の値を渡した結果を出力します。 また「a」の値を変化したかどうかを 確認するために もう一つ「debug.Print」文を 用意しておきます。 これで Function プロシージャ 「f」を呼び出した後の 「a」の値を確認することができます。 では Sub プロシージャ test を 実行してみましょう。 このように「f」に 「a」を渡して その時点では「5」ですけれども プラス1をして「6」が返ってますので Function プロシージャ 「f」に渡した 結果としては「6」で正しいのですが 「a」 値は元々「5」ですが これ自体もプラス1されています。 これは参照渡しにより 変数「a」と変数「b」が…

目次