我有一组数组,需要自动编辑某些数组中的某些值。但是,它们中的一些非常大,以至于将数组复制到新变量,删除集合项,编辑副本,然后将其放回集合中不仅不够优雅,而且最多也很慢。有没有人知道其他任何方法来实现这个目标?
修改
我应该指定集合存在于自定义类中,因此不能直接访问数组变量。我的问题的例证:
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
所需的输出“再见世界”只会出现(据我所知)使用我不想使用的方法。