【用語集に記載の内容について】

用語集に記載されているメソッドや関数の引数は、VBAエキスパート試験の試験範囲に基づいており、すべての引数を網羅しておりません。 また、書式は公式テキストの記載に準じています。
試験範囲外の引数や詳細については、ヘルプ機能やオブジェクトブラウザーをご参照ください。

【コードをコピーして実行する場合の注意】

文字コードの関係上、半角の「¥」は「/」で表示されるため、当サイトでは全角の「¥」で記載しています。当サイトのコードをコピーして実行する場合は、全角の「¥」を半角の「¥」に変換してください。

ByValキーワード

名称ByValキーワード
説明
値渡しを指定します。

プロシージャの引数に、変数の値だけを渡す渡し方を値渡しといいます。

変数を宣言すると、PCのメモリ上にその変数の値を書き込む箱(メモリ上のスペース)が確保されます。

値渡しでは、この箱の「中身」(値)をコピーし、呼び出し先のプロシージャに渡します。

このとき、元の変数とは別の「箱」が作られるため、引数を受け取った呼び出し先のプロシージャで値が書き換えられても、呼び出し元の変数は影響を受けません。

つまり、呼び出し元の変数と呼び出し先の引数は同じ名前であっても、完全に別々の箱を使っているため、別のものです。
書式
Sub マクロ名(ByVal 引数名 As 型)
    処理
End Sub

ByVal:引数を値渡しで渡すことを指定するキーワード
型:引数のデータ型を指定(例:Integer, String など)
コード例①
Sub Macro1()
    Dim S As String

    S = "東京都"
    Call Macro2(S)
    MsgBox S
End Sub

Sub Macro2(ByVal S As String)
    S = S & "渋谷区"
End Sub

Macro1のCallステートメントでMacro2を呼び出し、引数として変数Sを渡しています。

Macro2はByValで引数を受け取っているため、Macro2内で引数の値を変更しても、Macro1の変数Sの値は変更されません。

Macro1を実行すると、「東京都」のメッセージボックスが表示されます。
カテゴリスタンダード