Erreur de Cette clé est déjà associé à un élément de cette collection
Je suis en train de travailler sur les macros vba. J'ai essayé d'utiliser un dictionnaire. Mais c'est donnant error 457
avec le débogueur pointant vers toprow.Add ActiveCell.value, val
. Quelqu'un peut s'il vous plaît dites la question? J'ai même utilisé Cstr(activecell.value), Cstr(val)
comme mentionné dans une de la réponse sur la question.
Dim toprow As New Dictionary, Dictkey As Variant
Dim val As String
Range("A1").Activate
i = 0
Do Until i = ColLen
val = Chr(65 + i)
toprow.Add ActiveCell.value, val
i = i + 1
ActiveCell.Offset(0, 1).Activate
Loop
Il semble que
Ils sont tous uniques dans mon excel
Peut-être ColLen > la gamme dans la colonne A, auquel cas il essaie d'ajouter plusieurs cellules vides = "" touches?
En fait ça marchait très bien et quand j'ai mis plus de code ci-dessous pour opérer sur ces valeurs, il a commencé à donner à cette question!
J'avais inspecter la valeur actuelle de "ActiveCell.Valeur" en VBA vous donne un message d'erreur, puis essayer de trouver cette valeur dans la colonne A. une Autre option est que votre Range("A1") est sur un autre classeur de celui que vous attendez?
ActiveCell.value
n'est pas unique, c'est à dire qu'il est à la leasta dupliqué valeur dans la A
colonne.Ils sont tous uniques dans mon excel
Peut-être ColLen > la gamme dans la colonne A, auquel cas il essaie d'ajouter plusieurs cellules vides = "" touches?
En fait ça marchait très bien et quand j'ai mis plus de code ci-dessous pour opérer sur ces valeurs, il a commencé à donner à cette question!
J'avais inspecter la valeur actuelle de "ActiveCell.Valeur" en VBA vous donne un message d'erreur, puis essayer de trouver cette valeur dans la colonne A. une Autre option est que votre Range("A1") est sur un autre classeur de celui que vous attendez?
OriginalL'auteur Gauranga | 2014-02-05
Vous devez vous connecter pour publier un commentaire.
Add
ing touches avec les dictionnaires n'est possible que si une clé n'existe pas déjà. Accidentellement vous pourriez entré la clé avant, ou vouswatching
la clé avec le débogage de l'observateur, la création de la clé instanteneously. (= Si vous regarder une clé dans un dictionnaire, il est créé si il n'existe pas déjà).Vous avez à
d.Exists(keyname)
et ensuite utiliser led.Add keyname, value
méthoded.Item(keyname) = value
d.Item(keyname) = value
🙂+ 1 bien fait
OriginalL'auteur AutomatedChaos
J'ai fait le même message d'erreur: "Erreur lors de Cette clé est déjà associé à un élément de cette collection". Dans mon cas, le problème est que j'ai eu ceci:
J'étais censé avoir ceci:
Peut-être vous avez juste à vérifier votre "Propriété Laisser" code pour voir si vous utilisez des noms appropriés pour les variables qui sont privés dans votre classe.
OriginalL'auteur Jaime Montoya
Vous pouvez également ajouter un peu très de base de la gestion d'erreur, si tout ce que vous voulez faire est de sauter par-dessus le dossier de jeter cette erreur. J'ai simplement inséré au-dessous de la ligne immédiatement au-dessus de celle qui a été l'origine de cette erreur pour moi, et maintenant, avec bonheur, se déplace le long, en ignorant les doubles des clés qui a utilisé pour se débarrasser de cette erreur.
On Error Goto 0
ou même unif Err.number <> 0 then
pourrait l'aider.Je suis nouveau sur VBA donc s'il vous plaît corrigez-moi si je me trompe ici; mes commentaires sont basées sur mes propres tests à l'exécution de mon plein macro à travers un ensemble de données limité. J'avais besoin d'ignorer la valeur en double parce que je suis en utilisant un roll-macro, qui fournit une union de valeurs. (Donc, une fois que j'ai une valeur une fois je n'ai pas besoin de faire quelque chose avec elle si elle apparaît de nouveau), j'ai ajouté la ligne que j'référence ci-dessus, et mes résultats testés étaient de bonne semble ignorer l'erreur de l'amende juste. Ai-je raté quelque chose?
bpboldin, la raison de dakab'commentaire est que ce n'est pas l'erreur manutention, c'est l'erreur sauter. À l'aide de
if err.number <> 0
et puis si ce n'est une erreur connue, avec quelque chose que le code peut faire pour le contourner, l'impressionerr.number
,err.source
, eterr.description
à l'écran ou le fichier de gérer l'erreur, plutôt que de provoquer l'inattendu, l'arrêt du script qui ne permet pas de fichiers à être fermé, un journal de tous les détails de la raison de l'arrêt, ou de toute erreur conviviale les messages seront affichés.OriginalL'auteur bpboldin