2017-02-22 12 views
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 

所望の出力「さよならの世界は」唯一私が使用しない方法を使用して(私の知る限りでは)が発生します。

+0

「値」を変更するだけの場合は、 'array'をコピーする必要はありません。 –

+0

@ A.S.H編集を参照してください。私は自分自身をより明確にすることを願っています。 – Theaetetos

+0

カスタムクラスには、配列全体を返すか設定するメソッドしかありませんか?あなたは私の推測するコードを所有していません... –

答えて

0

それはcollections are read-onlyであることが判明したので、私が探していたタイプの解決策はありません。代わりに問題を再考することにしました。

関連する問題