编辑集合Excel VBA中的数组

时间:2017-02-22 16:33:49

标签: excel-vba vba excel

我有一组数组,需要自动编辑某些数组中的某些值。但是,它们中的一些非常大,以至于将数组复制到新变量,删除集合项,编辑副本,然后将其放回集合中不仅不够优雅,而且最多也很慢。有没有人知道其他任何方法来实现这个目标?

修改

我应该指定集合存在于自定义类中,因此不能直接访问数组变量。我的问题的例证:

Sub illustration()

Dim coll As New Collection
Dim arr As Variant
ReDim arr(0 To 1)
arr(0) = "hello"
arr(1) = "world"
coll.Add arr

coll(1)(0) = "goodbye"

Debug.Print Join(arr)
Debug.Print Join(coll(1))

slowMethod coll, 1

Debug.Print Join(arr)
Debug.Print Join(coll(1))

End Sub

Sub slowMethod(ByRef edit_coll As Collection, index As Integer)

Dim return_arr As Variant
return_arr = edit_coll(index) '<--this will take up a lot of memory if the array has, say, 300,000 records

edit_coll.Remove index

return_arr(LBound(return_arr)) = "goodbye"

edit_coll.Add return_arr

End Sub

所需的输出“再见世界”只会出现(据我所知)使用我不想使用的方法。

1 个答案:

答案 0 :(得分:0)

事实证明collections are read-only,所以没有我正在寻找的类型的解决方案。我选择重新考虑这个问题。