【VBA】Collectionを配列にする
VBAでリストを扱う際、よく使われるのはCollectionだと思います。
しかし、リストを何らかのメソッドで使用する場合には引数として配列を求められることも多いんですよね。
Collectionから一括で配列にするメソッドがありそうでなかったため、自分で作成しました。
コピペ用です。
'//////////////////////////////////////////////////
' Collectionを配列にする
'//////////////////////////////////////////////////
Private Function CollectionToArray(ByVal targetCollection As Collection) As Variant
Dim resultArray()
Dim arraySize
Dim index
Dim val
' 配列のサイズを取得する
arraySize = targetCollection.Count
' 配列のサイズが0ではない場合
If arraySize <> 0 Then
' 取得したサイズで配列を作成する
arraySize = arraySize - 1
ReDim resultArray(arraySize)
End If
' indexの初期値を設定する
index = 0
For Each val In targetCollection
resultArray(index) = val
index = index + 1
Next
' 戻り値に設定する
CollectionToArray = resultArray
End Function
使い方は引数にCollectionを入れるだけです。
'//////////////////////////////////////////////////
' メソッド呼び出し確認用
'//////////////////////////////////////////////////
Public Sub callMethod()
Dim strList As Collection
Dim strArray()
' Collectionを初期化する
Set strList = New Collection
' Collectionに要素を追加する
strList.Add ("いぬ")
strList.Add ("ねこ")
strList.Add ("おうむ")
' CollectionをArrayにする
strArray = CollectionToArray(strList)
End Sub
Collectionに一発変換できるメソッドがありそうなものですけどね。
変換するにしても、もっと良い方法がありそうです。
One Response to "【VBA】Collectionを配列にする"