VBAメモ メソッドでCollectionを戻り値で返してみる

VBA

VBA独特と言うかクセと言うか…なんか困ったのでメモしとくことに。
ざっくりこんな感じ?

  1. 戻り値にSetを指定する
  2. 受け取り側で代入する方にSetを指定する

んで、まずは呼び出される方はこんな感じ。

Private Function GetValues()

    ' コレクションを作成する
    Dim objValues As Collection
    Set objValues = New Collection
    
    ' お試しの値を設定する
    objValues.Add "a"
    objValues.Add "b"
    objValues.Add "c"
    
    ' 値を返すときにSetを指定する
    Set GetValues = objValues

End Function


んで、呼び出す方はこんな感じ。
Public Sub Proto()

    ' 変数を定義する
    Dim objCollection As Collection
    Dim objValue As Variant
    
    ' Functionを呼び出す
    ' 値を取得するときはSetを指定すること
    Set objCollection = GetValues()

    ' 値を取得できたかをイミディエイトウィンドウに出力して確認してみる
    For Each objValue In objCollection
        Debug.Print objValue
    Next
    
    ' オブジェクトを破棄する
    If Not objCollection Is Nothing Then
        Set objCollection = Nothing
    End If

End Sub

実行してみるとこんな感じになった。
a
b
c

知っていると簡単なんだけど知らんとテンパるな…。
そんなこんなで、明日への自分へのメモで。