本学習テーマ紹介動画
👆本学習テーマをYouTubeで紹介しています!
チャンネル登録宜しくお願いします!
効果音ラボ ナレーション 音読さん
*基本的に, 記事投稿日翌日夜18:30頃から, 動画を閲覧できます。
本学習ツールでの問題文・解答例
問題文
以下の要件を満たすVBAのプログラムを実装して下さい。
要件
Boolean型の変数(初期値:False)を定義し, シート「読み込みシート」の「読み込みセル」の値(文字列)を読み込み, その値に応じて以下のように動く。 値が「参照渡し」の場合:下の関数(参照渡し)を, 引数にBoolean型の変数(初期値:False)を渡して実行する。 値が「値渡し」の場合:下の関数(値渡し)を, 引数にBoolean型の変数(初期値:False)を渡して実行する。 最後に, Boolean型の変数の値がTrueになっていたら MsgBox関数で「(「読み込みセル」の値):引数に渡した変数の元の値がFalse→Trueに変更されました。」と表示し, Boolean型の変数の値がFalseのままで変更されていなかったら MsgBox関数で「(「読み込みセル」の値):引数に渡した変数の元の値は変更されませんでした。」 とメッセージで表示する。 |
以下の二つの関数を定義する。 関数(参照渡し) 引数に参照渡しのBoolean型の変数をもち, 関数内でその変数の値をTrueに書き換える。(戻り値はなし) 関数(値渡し) 引数に値渡しのBoolean型の変数をもち, 関数内でその変数の値をTrueに書き換える。(戻り値はなし) |
解答例
Option Explicit
Function ByRefFunc(ByRef boolVal As Boolean)
boolVal = True
End Function
Function ByValFunc(ByVal boolVal As Boolean)
boolVal = True
End Function
Sub correctAnswerExample()
Dim boolVal As Boolean: boolVal = False
Dim readStr As String: readStr = ThisWorkbook.Worksheets("読み込みシート").Cells(6, 2).Value
If readStr = "参照渡し" Then
Call ByRefFunc(boolVal)
ElseIf readStr = "値渡し" Then
Call ByValFunc(boolVal)
End If
' 参照渡し「ByRef」で関数内で値を変更した場合は元の値も変更される。
' 値渡し「ByVal」で関数内で値を変更した場合は元の値は変更されない。
' 変数がBoolean型の場合は「If (Boolean型変数) Then」で条件分岐ができる
If boolVal Then
MsgBox readStr & ":引数に渡した変数の元の値がFalse→Trueに変更されました。"
Else
MsgBox readStr & ":引数に渡した変数の元の値は変更されませんでした。"
End If
End Sub
上のプログラムが実際に動く様子は, 下の学習ツールをダウンロードして, 確認してみて下さい!
本学習ツールの内容
下👇の画像のように, 「vbaで関数に引数を設定する方法」や「参照渡し(ByRef)と値渡し(ByVal)の違い」を学ぶことが出来ます!
*2枚目の「正答シート」の画像は, 学習前に答えを知りたくない方は飛ばして見て頂くようお願い致します。
本学習テーマの格言
- 参照渡し(ByRef)と値渡し(ByVal)の違いを理解しよう!
参照渡し (ByRef) | 値渡し (ByVal) | |
関数内で引数の変数 の値を変更した場合 元の値が変更されるか | 変更される | 変更されない |
VBA設定
尚, 本ツールには, 「VBA」(Excelのプログラミング言語)が組み込まれている為, 以下のマニュアルに従った設定・エラー時の対処が必要となります。
ダウンロード
ぜひ, 勉強にご活用下さい!👇
コメント