0
私は配列のコレクションを持っており、配列の中のいくつかの値を自動的に編集する必要があります。しかし、それらのうちのいくつかは、配列を新しい変数にコピーし、コレクションアイテムを削除し、コピーを編集してコレクションに戻すだけでなく、最高でも非常に遅いです。誰かがこれを達成するための他の方法を知っていますか?私はコレクションは、カスタムクラス内に存在することを指定していなければならないので、配列変数に直接アクセスすることはできませんコレクション内の配列の編集Excel VBA
EDIT
。私の問題の実例:
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
所望の出力「さよならの世界は」唯一私が使用しない方法を使用して(私の知る限りでは)が発生します。
「値」を変更するだけの場合は、 'array'をコピーする必要はありません。 –
@ A.S.H編集を参照してください。私は自分自身をより明確にすることを願っています。 – Theaetetos
カスタムクラスには、配列全体を返すか設定するメソッドしかありませんか?あなたは私の推測するコードを所有していません... –