VBA独特と言うかクセと言うか…なんか困ったのでメモしとくことに。
ざっくりこんな感じ?
- 戻り値にSetを指定する
- 受け取り側で代入する方に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
知っていると簡単なんだけど知らんとテンパるな…。
そんなこんなで、明日への自分へのメモで。