ExcelWork.info

Excel(エクセル)のマクロ・VBA・関数・操作などのメモ

引数の参照渡し・値渡し( ByRef, ByVal )

   

引数の「参照渡し」と「値渡し」


参照渡し」とはプロシージャに引数として変数を渡す方法の1つで、この場合、変数が格納されたアドレスを渡します。このため、呼び出されたプロシージャ内で渡された変数の値を変更すると、呼び出し元の変数の値も変更されてしまいます
一方、「値渡し」もプロシージャに引数として変数を渡す方法の1つですが、こちらは、変数のコピーを渡します。したがって、呼び出されたプロシージャ内で渡された変数の値を変更しても呼び出し元の変数の値は変更されません


【構文】

< 参照渡し >
Sub name ( ByRef varname As varname_type )

< 値渡し >
Sub name ( ByVal varname As varname_type )


【項目の説明】

  • name  ・・・  定義するプロシージャ(Sub プロシージャ・Function プロシージャなど)の名前
  • varname  ・・・  プロシージャを呼び出したときに引き渡す引数を指定します。複数指定する場合はカンマ(,)で区切ります。
  • varname_type  ・・・  引数 varname のデータ型を指定します。省略すると引数 varname は、バリアント型(Variant)となります。

「参照渡し」にしたい時は、ByRef キーワードを、「値渡し」にしたい時は、ByVal キーワードを引数 varname の前につけますが、これらのキーワードを省略した場合は、「参照渡し」となります


「ByRef キーワード」「ByVal キーワード」の使用例

サンプルVBAソース


実行結果

参照渡し・値渡し 例




 - 構文 , , , , ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

配列が引数のプロシージャ 例1
配列が引数のプロシージャを作成する

配列が引数のプロシージャを作成する 【構文】 { Sub | Function …

GoSub ステートメント
プロシージャ内のサブルーチンへ移動(GoSub…Return ステートメント)

GoSub…Return ステートメント GoSub ステートメント …

プロシージャを呼び出す(Call ステートメント)

プロシージャを呼び出す プロシージャ内から、別のプロシージャを呼び出すには、Ca …

プロシージャ作成 例
プロシージャを作成する( Sub, Function )

プロシージャを作成する プロシージャとは、実行時に 1 つの単位として処理される …

for_next ステートメント例
繰り返し処理(For…Next ステートメント)

For…Next ステートメントの使い方 【構文】 For coun …

for each next ステートメント例
繰り返し処理(For Each…Next ステートメント)

For Each…Next ステートメントの使い方 【構文】 For …

Do Until...Loopステートメント例
繰り返し処理(Do…Loop ステートメント)

Do…Loop ステートメントの使い方 【構文 1】 Do [ Wh …

While_Wend ステートメント例
繰り返し処理(While…Wend ステートメント)

While…Wend ステートメントの使い方 【構文】 While …

GoTo ステートメント01
プロシージャ内のサブルーチンへ移動(GoTo ステートメント)

GoTo ステートメント GoTo ステートメントは、指定したラベルのサブルーチ …

省略可能な引数・デフォルト値を設定( Optional キーワード )

Optional キーワード Optional キーワードを使用するとプロシージ …