配列の要素をCollection化するFunction
配列の要素をコレクション化するFunction
配列の要素をコレクションに格納する
ちょっと思いつきで作ってみた。
リスト1 標準モジュール
Public Function convertArrayToCollection( _ ByRef targetArray As Variant) As Collection If Not IsArray(targetArray) Then Exit Function Dim tmp As New Collection Dim i As Long For i = LBound(targetArray) To UBound(targetArray) tmp.Add targetArray(i) Next Set convertArrayToCollection = tmp End Function
見ての通り、引数で渡された配列の要素を1つ1つ取り出してコレクションにAddしているだけ。
使ってみた
次のコードで実行。
リスト2 標準モジュール
Public Sub testArrayToCollection() Dim ar(3) As String '……(1)' ar(0) = "アホ" ar(1) = "ボケ" ar(2) = "クズ" ar(3) = "デコスケ" Dim cl As New Collection '……(2)' Set cl = convertArrayToCollection(ar) Dim i As Integer With cl For i = 1 To .Count Debug.Print cl.Item(i) Next End With End Sub
まず(1)からの5行
Dim ar(3) As String ar(0) = "アホ" ar(1) = "ボケ" ar(2) = "クズ" ar(3) = "デコスケ"
で、実験用に要素数4のString型配列ar()を用意。
(2)からの2行
Dim cl As New Collection Set cl = convertArrayToCollection(ar)
で、Collection型の変数clをNewして、リスト1のFunctionの返り値をセット。
後は、Forループで要素を1つ1つ取り出してDebug.Printでイミディエイトに表示しているだけ。
実行結果
ひとまず、意図どおり。
ただし、1次元配列にしか対応していないので、なんだかなあ、である。