9

VBAの配列からのすべての値をコレクションに取り込む簡単な方法はありますか?例:

Dim c As New Collection
Dim a(10) As Variant
...
c.AddAll a

単純な解決策は配列を反復処理する原因になりますが、現代語は箱から出してそのようなメソッドを提供することを期待しています...

Dim c As New Collection
Dim a(10) as Variant
...
For Each item in a
  c.Add item
Next item

ヒントをありがとう!

4

1 に答える 1

13

「現代言語」はあなたの問題があるところです-VBA/VB6は本当に現代的ではありません-どちらも数年間あまり進歩していません.

何度も実行する必要がある場合は、ループを実行する関数を記述します。

Sub AddAll(ByVal c as Collection, a as Variant)
    For Each item in a
      c.Add item
    Next item
End Sub

または、毎回新しいコレクションが必要な場合:

Function ToCollection(a as Variant) As Collection
    Dim c As New Collection
    For Each item in a
      c.Add item
    Next item
    Set ToCollection = c
End Function

そしてそれを使用します:

Dim c As New Collection
Dim a(10) as Variant
...
AddAll c,a

また

Dim a(10) as Variant
Dim c as Collection
...
Set c = ToCollection(a)
于 2012-09-04T07:46:35.473 に答える