...the option to add an item after a known other
item and that is what I need...
Hi. For Collections, one technique is to store the "Key" name as part of
the data. It's not ideal, but can be a work-around.
You will need some error checking with mixed data types in the collection.
Sub Demo()
Dim oColl As Collection
Dim arr(0 To 10)
Dim p As Long
Set oColl = New Collection
arr(0) = "a" ' Index 0 for key...
arr(1) = 5
oColl.Add arr, "a"
oColl.Add 3.14, "Pi"
oColl.Add 1.23, "Sales"
'// Update "a"
arr(1) = 6
For p = 1 To oColl.Count
If oColl(p)(0) = "a" Then
oColl.Remove ("a")
oColl.Add arr, "a", Befo=p
Exit For
End If
Next
End Sub
Another technique is to store the key name and your data array inside
another array...
oColl.Add Array("a", arr), "a"
Hope this helps. :)
--
Dana DeLouis
Win XP & Office 2003
"RB Smissaert" wrote in message
...
Jim,
Yes, I had a look at the dictionary object, but what is misses is the
option to add an item after a known other
item and that is what I need as it has to be in the same order as the
nodes in the treeview.
Will look again in putting the data as a 1-D array in node tags. That
would be the most robust linkage with the
nodes and would save me having a routine for clearing data after a node
was deleted.
The other option I can think of now is storing it in a sheet.
RBS
"Jim Cone" wrote in message
...
RBS,
You can do something close to what you want with the
Scripting Dictionary object...
'-------------
Sub test3()
'Requires project reference to "MicrosoftScriptingRuntime"
'Note that the order of the Key and Item arguments are the reverse
'of those in a Collection.
Dim oDic As Scripting.Dictionary
Dim arr(1 To 10)
Set oDic = New Scripting.Dictionary
arr(1) = 5
oDic.Add "a", arr()
MsgBox oDic("a")(1)
arr(1) = 6
oDic("a") = arr()
MsgBox oDic("a")(1)
Set oDic = Nothing
End Sub
'------------------------
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware
"RB Smissaert"
wrote in message
Is it possible to update the value of an array element if that array is
held
by a collection?
It seems not:
Sub test2()
Dim oColl As Collection
Dim arr(1 To 10)
Set oColl = New Collection
arr(1) = 5
oColl.Add arr, "a"
MsgBox oColl(1)(1)
oColl(1)(1) = 6
MsgBox oColl(1)(1)
End Sub
Is there any solution for this?
The whole purpose is to store data with nodes of a treeview control and
to
have a robust
linkage between the nodes and the stored data.
RBS