Einstellung der Item-Eigenschaft in einer Sammlung in VBA
Ich bin überrascht, wie hart dieser wurde zu tun, aber ich kann mir vorstellen es ist eine schnelle Lösung, damit ich hier Fragen (gesucht google und Dokumentation, aber weder geholfen). Ich habe einige code, fügt die Elemente zu einer Sammlung mithilfe von Schlüsseln. Wenn ich über einen Schlüssel, der bereits in der Sammlung, ich möchte einfach legen Sie es durch hinzufügen einer Zahl zum aktuellen Wert.
Hier ist der code:
If CollectionItemExists(aKey, aColl) Then 'If key already has a value
'add value to existing item
aColl(aKey).Item = aColl(aKey) + someValue
Else
'add a new item to the collection (aka a new key/value pair)
mwTable_ISO_DA.Add someValue, aKey
End If
Als ich das erste mal fügen Sie den Schlüssel/Wert-paar in die Sammlung, ich bin das hinzufügen einer Ganzzahl als Wert. Wenn ich über den Schlüssel wieder, ich versuche, um eine weitere ganze Zahl, um den Wert, aber das funktioniert nicht. Ich glaube nicht, dass das problem liegt in jeder Art von Objekt mis-match oder etwas ähnliches. Die Fehlermeldung die ich derzeit bekomme, ist
Laufzeitfehler 424: Objekt Erforderlich
- Diese Antwort zu einer früheren, ähnlichen Frage sollte auch die Antwort auf Ihre Frage: stackoverflow.com/questions/5709444/modify-value-by-key/... . Die kurze version ist, dass die Sammlungen nicht so arbeiten arrays; Sie können nicht zuweisen, ein "element". Die Antworten andere, die bereits gegeben haben Sie sind gute alternativen Möglichkeiten zu bekommen, was Sie wollen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht Bearbeiten Sie die Werte, sobald Sie Hinzugefügt wurden, um eine Sammlung. So ist dies nicht möglich:
Statt, Sie können Holen Sie das Objekt aus der Sammlung, Bearbeiten Sie den Wert, und fügen Sie es zurück.
Dies ist ein bisschen langweilig, aber diese drei Zeilen in eine Sub und du bist alle set.
Sammlungen sind mehr freundlich, wenn Sie als Container für Objekte (im Gegensatz zu Containern für die "primitive" Variablen wie integer, double, etc.). Sie können nicht ändern die Objekt-Referenz, die in der Sammlung, aber Sie können Bearbeiten das Objekt an diese Referenz.
On a side note, ich glaube das hast du falsch verstanden, die syntax bezogen auf
Item
. Man kann nicht sagen:aColl(aKey).Item
. Die richtige syntax istaColl.Item(aKey)
oder, für kurze,aColl(aKey)
seitItem
ist die Standard-Methode des Collection-Objekts. Ich bevorzuge jedoch die Verwendung des vollständigen, expliziten form...Dictionaries
sind vielseitiger und haben mehr Zeit effizienter alsCollections
. Wenn Sie ging diese route, die Sie laufen konnte und einfachExists
test auf das Wörterbuch direkt unter, und aktualisieren Sie dann die Taste WertPatrick Matthews geschrieben hat einen exzellenten Artikel über Wörterbücher, Sammlungen v
Ich denke, dass Sie benötigen, entfernen Sie die vorhandenen Schlüssel-Wert-paar und fügen Sie dann die Taste, um die Sammlung wieder aber mit dem neuen Wert