Réglage de l'Élément de propriété d'une Collection en VBA
Je suis surpris de voir combien dur a été de le faire, mais j'imagine que c'est une solution rapide, je vais donc demander ici (une recherche google et de la documentation, mais ni aidé). J'ai un code qui ajoute des éléments d'une collection en utilisant les touches. Quand je tombe sur une clé existe déjà dans la collection, je veux simplement définie par l'ajout d'un numéro à la valeur actuelle.
Voici le 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
La première fois que j'ai ajouter la paire clé/valeur dans la collection, je suis l'ajout d'un entier comme valeur. Quand je viens sur la touche de nouveau, j'essaie d'ajouter un autre entier de la valeur, mais cela ne fonctionne pas. Je ne pense pas que le problème réside dans n'importe quel type d'objet mis-match ou quelque chose de similaire. Le message d'erreur j'ai actuellement est
Erreur D'Exécution 424: Objet Requis
OriginalL'auteur winnicki | 2011-09-26
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas modifier les valeurs une fois qu'ils ont été ajoutés à la collection. Ce n'est donc pas possible:
Au lieu de cela, vous pouvez prendre l'objet de la collecte, de modifier sa valeur, et l'ajouter.
C'est un peu fastidieux, mais avec ces trois lignes dans un Sous, et vous êtes tous ensemble.
Collections sont plus sympas quand ils sont utilisés comme conteneurs pour objets (par opposition à conteneurs pour les "primitifs", des variables comme integer, double, etc.). Vous ne pouvez pas modifier la référence de l'objet contenu dans la collection, mais vous pouvez manipuler l'objet attaché à cette référence.
Sur une note de côté, je pense que vous avez mal compris la syntaxe liée
Item
. Vous ne pouvez pas dire:aColl(aKey).Item
. La bonne syntaxe estaColl.Item(aKey)
, ou, pour faire court,aColl(aKey)
depuisItem
est la méthode par défaut de l'objet de Collection. Cependant, je préfère utiliser le plein, de la forme explicite...OriginalL'auteur Jean-François Corbett
Dictionaries
sont plus souples et plus efficace que laCollections
. Si vous êtes allé à ce parcours que vous avez pu exécuter un simpleExists
essai sur le Dictionnaire directement ci-dessous, et ensuite mettre à jour la valeur de la cléPatrick Matthews a écrit un excellent article sur dictionnaires v collections
OriginalL'auteur brettdj
Je pense que vous avez besoin pour enlever la paire clé-valeur, puis ajoutez la clé de la collecte de nouveau, mais avec la nouvelle valeur
OriginalL'auteur barrowc