LoginSignup
40
39

More than 3 years have passed since last update.

VBAで配列を引数・戻り値にする方法

Last updated at Posted at 2018-03-10

前書き

久しぶりにVBAを使うと毎回のように調べているので、VBAでプロシージャに配列を引数として渡す、戻り値として受け取る方法をまとめました。

初めての投稿なので、未熟な部分がありましたらご指摘いただけると幸いです。

配列を引数として渡す

呼び出し時の変数名の後ろの「()」を付けなくても実行できる。
配列を引数にする場合は参照渡し(ByRef)にする必要がある。

Sub main()

    Dim arr(2) As Long
    arr(0) = 1
    arr(1) = 2
    arr(2) = 3

    Call test(arr())

End Sub


Sub test(ByRef arr() As Long)

    Dim val As Variant
    For Each val In arr
        Debug.Print val
    Next

End Sub
実行結果
 1 
 2 
 3 

値渡し(ByVal)や引数の変数名の後ろに「()」を付けないとエラーになる。

値渡しにした場合

001.JPG

変数名の後ろに「()」を付けない場合

002.JPG

配列を戻り値として受け取る

戻り値を受け取る配列は動的配列にしておく必要がある。

Sub main()

    Dim arr() As Long
    arr() = test()

    Dim val As Variant
    For Each val In arr
        Debug.Print val
    Next

End Sub

Function test() As Long()

    Dim arr(2) As Long
    arr(0) = 1
    arr(1) = 2
    arr(2) = 3

    test = arr()

End Function

実行結果
 1 
 2 
 3 

ファンクションプロシージャに戻り値の型を記載する場合は変数名の末尾に「()」を付けないとエラーになる。

003.JPG

40
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
39