Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change value of an item of a collection

With this code (in excel-vba) I add to a collection a number of items depending on an array.
I use the value of the array as key and the string "NULL" as value for each item added.

Dim Coll As New collection
Dim myArr()

Set Coll = New collection
myArr() = Array("String1", "String2", "String3")

For i = LBound(myArr) To UBound(myArr)
    Coll.Add "NULL", myArr(i)
Next i

Now, if I want to change the value of an item, identifying it by the key, I must remove the item and then add an item with same key or is it possible to change the item value?

This below is the only way?

Coll.Remove "String1"
Coll.Add "myString", "String1"

Or is there something like: (I know that doesn't work)

Coll("String1") = "myString"
like image 885
genespos Avatar asked Apr 09 '15 14:04

genespos


People also ask

How do you update a value in a collection in VBA?

Here is a solution where Coll("String1") = "myString" does work. When you . Add an object to a VBA collection, the object itself is added, not its value. This means you can change the object's properties while it is in the collection.


1 Answers

You can also write a (public) function to make updates to a collection.

public function updateCollectionWithStringValue(coll as Collection, key as string, value as string) as collection
    coll.remove key
    coll.add value, key
    set updateCollectionWithStringValue = coll
end function

You can invoke this function by:

set coll = updateCollectionWithStringValue(coll, "String1","myString")

Then you have a one liner to invoke.

like image 79
Jurrian Fahner Avatar answered Oct 02 '22 05:10

Jurrian Fahner