当サイトはアフィリエイト広告を利用しています

VBA学習ツール無料配布!#11 テーマ:vbaのByRefとByValの違いを理解しよう!

vbaのByRefとByValの違いを理解しよう! VBA学習
vbaのByRefとByValの違いを理解しよう!

日本最大級のAI人工知能プログラミングスクール

Aidemy「強み」3選

  1. 3ヶ月集中でAIプログラミング習得
  2. 完全オンライン完結!
  3. 会員登録者数 65,000名突破!

本学習テーマ紹介動画

👆本学習テーマを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枚目の「正答シート」の画像は, 学習前に答えを知りたくない方は飛ばして見て頂くようお願い致します。

VBA学習ツール-vbaのByRefとByValの違いを理解しよう!の問題文&解答シート
VBA学習ツール-vbaのByRefとByValの違いを理解しよう!の問題文&解答シート
VBA学習ツール-vbaのByRefとByValの違いを理解しよう!の正答シート
VBA学習ツール-vbaのByRefとByValの違いを理解しよう!の正答シート
VBA学習ツール-テーマ:vbaのByRefとByValの違いを理解しよう!の読み込みシート
VBA学習ツール-テーマ:vbaのByRefとByValの違いを理解しよう!の読み込みシート

本学習テーマの格言

  • 参照渡し(ByRef)と値渡し(ByVal)の違いを理解しよう!
参照渡し
(ByRef)
 値渡し
(ByVal)
関数内で引数の変数
の値を変更した場合
元の値が変更されるか
変更される変更されない
参照渡し(ByRef)と値渡し(ByVal)の違い

VBA設定

尚, 本ツールには, 「VBA」(Excelのプログラミング言語)が組み込まれている為, 以下のマニュアルに従った設定・エラー時の対処が必要となります。

ダウンロード

ぜひ, 勉強にご活用下さい!👇

コメント

タイトルとURLをコピーしました