【VBA】Collectionを配列にする
VBAでリストを扱う際、よく使われるのはCollectionだと思います。
しかし、リストを何らかのメソッドで使用する場合には引数として配列を求められることも多いんですよね。
Collectionから一括で配列にするメソッドがありそうでなかったため、自分で作成しました。
コピペ用です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | '////////////////////////////////////////////////// ' 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を入れるだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | '////////////////////////////////////////////////// ' メソッド呼び出し確認用 '////////////////////////////////////////////////// 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を配列にする"