スタンダード 模擬問題

Excel VBA スタンダード 模擬試験 ランダム順出題 ③ 第2問

次のコードは実行したとき、メッセージボックスに「40」と表示するマクロである。

空欄に入る適切な語句を解答しなさい。

Sub Exam1()

 Dim B As Long

 B = 20

  Call ModifyValue(B)

 MsgBox B

End Sub

Sub ModifyValue(【   ①  】 B As Long)

 B = B * 2

End Sub

正解

【  ①  】 byref、何も指定しない

解説

【1章 プロシージャ】

本問題では参照渡しで引数を渡しています。

プロシージャを呼び出すとき、呼び出し先のプロシージャに計算や処理に使う値(引数)を渡すことができます。

・引数を渡す場合は2種類あります。

参照渡し・・・引数の定義にByRefを付け加える、あるいは何も指定しない

特徴:値が共有される(その後の処理結果が呼び出し元の値に反映される。)

値渡し・・・引数の定義にByValを付け加える。

特徴:値がコピーされる(その後の処理結果が呼び出し元の値に反映されない。渡されたそのままの値)

【コード解説】

Sub Exam1()

 Dim B As Long

’ 長整数型の変数 B を宣言する。

 B = 20

’ 変数 B に 20 を代入する。

’ プロシージャ ModifyValue を呼び出し、B を処理結果が反映される、参照渡しをする。

  Call ModifyValue(B)

 MsgBox B

’ メッセージボックスに B の値を表示する。

End Sub

Sub ModifyValue(ByRef B As Long)

 B = B * 2

’ 変数 B を2倍し代入する。

End Sub