関数・メソッド

複数の値を渡すプロシージャを作成する【ByRefキーワード】【ExcelVBA】

Functionで複数の値を渡したい

VBAでは関数の戻り値はひとつしかないので、複数の戻り値が欲しいとき困りますよね。
ByRefキーワードを利用すれば、いくつかの引数をプロシージャに渡すことができます。
ByVal(値渡し)ではなくByRef(参照渡し)を利用するのは、引数の値を変更したとき参照元に影響を与えるためです。
※複数の値を渡すではなく、返してほしい場合はByRefを使用します。(ByValとByRefの違いはこちら。)

基本の形
Sub/Function name ( 変数名1 As データ型1,変数名2 As データ型2,)

引数の数だけ変数を宣言し、変数間は上記のようにカンマで区切ってください。

二つの引数を同一セルに入力するサンプルコード

'メインのプロシージャ
Public Sub Sample()
    Dim str1 As String '一つ目の変数を宣言
    Dim str2 As String '二つ目の変数を宣言

    str1 = "Hello, "
    str2 = "World!"
    
    Call Value(str1, str2) '下記のプロシージャを呼び出す
    

End Sub

'呼び出されるプロシージャ
Public Function Value(ByRef str1 As String, ByRef str2 As String)

  '二つのデータをA1セルに入力する
    Dim words As String
    words = words & str1 & str2

    Range("A1").Value = words

End Function


注意点

    • コードの可読性が損なわれる場合は、戻り値の配列化等を検討してください。
    • 実際に引数を10個とかにすると読みづらいだけなので注意しましょう。

関連記事

コメント

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