Comment surveiller les valeurs dans un Dictionnaire dans le VBA Excel regarder la fenêtre?

Je suis à l'aide de dictionnaires en VBA Excel via dict As New Dictionary (et ajout d'une référence pour l'exécution de scripts). Quand j'ai essayer de suivre ces cours de débogage, je ne peux que voir les touches qui se trouvent dans le dictionnaire, mais pas la valeur respective de chaque touche.

Est-il possible de voir la valeur que le bien? Il serait débogage beaucoup plus facile pour moi.

EDIT: en Fonction de vos réponses, il n'y a pas de solution facile, mais je peux faire la suite.

Utiliser une variable globale Dim d_obj As Object et de le surveiller en permanence et à chaque fois que j'ai besoin de regarder pour une valeur d'un dictionnaire, je tape dans la fenêtre exécution Set d_obj(key) = ... et je vais être en mesure de voir la valeur dans le moniteur-fenêtre.

Ce que je peut faire en plus c'est d'écrire une fonction qui prend un dictionnaire et retourne les valeurs d'une liste et d'utiliser cette fonction de même, à l'direct de la fenêtre. Merci à tous!

  • Voulez-vous dire que vous voulez voir de la "valeur" ainsi que la clé?
  • >>>"je ne peux voir que les touches qui se trouvent dans le dictionnaire, mais pas la valeur respective de chaque touche." <<< Comment êtes-vous de débogage pour voir les valeurs? Cela fonctionne dans la fenêtre exécution. ?dict.Item(1)
  • stackoverflow.com/questions/738412/...
  • Comme @SiddharthRout dit, l'aide de l'index du Dictionnaire est généralement la voie à suivre. Cependant, comme la valeur dans un Dictionnaire peut être n'importe quoi (des objets, des types définis par l'utilisateur, des tableaux, etc.) il n'y a pas de preuve de manière à obtenir les valeurs d'un dictionnaire comme quoi je pense que vous voulez.
  • Je ne pense pas que vous le pouvez, la meilleure façon est ce que @SiddharthRout propose: type dict(yourKey) dans la fenêtre espion. Notez qu'il y a un bug dans certaines versions de VBA: si vous tapez dict(aKeyThatDoesNotExist) dans la fenêtre watch, cette clé peut obtenir créée avec une valeur null qui provoque bizarre et difficile à reproduire les bugs...
  • Une alternative serait de créer une classe personnalisée qui possède les mêmes méthodes qu'un Dictionnaire et contient un dictionnaire et un tableau qui met à jour à chaque fois que le Dictionnaire est changé... Vous n'aurez qu'à modifier la déclaration de Dim dict as Dictionary à Dim dict as MyDictionary. Le reste serait inchangé. Mais c'est beaucoup de travail juste pour le débogage...
  • Bonne question. Un avantage de l'utilisation des Collections, c'est que vous pouvez plus facilement l'affichage des valeurs à l'intérieur via la fenêtre d'observation. Je suis demandé sur l'écriture d'une fonction DLL de retour d'un conteneur (tableau ou d'une collection) qui peut être appelée à partir de la fenêtre d'observation pour voir les valeurs dans un dictionnaire, peut-être un utilitaire de ce qui existe déjà?
  • oui, je veux voir la " clé "et la "valeur", ce qui bien sûr parfois être compliqué objet auquel cas la ?dict.Item(1) méthode ne fonctionnera pas. Concernant la définition d'une catégorie distincte, j'ai pensé à ce sujet, mais dans mon cas, il a rejeté pour ne pas la peine. @lori_m: je serais certainement utiliser un utilitaire si elle existait.
  • merci pour vos réponses!! Vous avez confirmé ma crainte qu'il n'existe pas de solution facile à ce. La raison pour cela peut être que le dictionnaire-l'objet n'est pas une excel-objet natif, mais est pris de la com-buffet-table...
  • en général, si je suis d'exploitation sur une liste d'objets complexes à l'intérieur d'un dictionnaire, je vais détacher de dictionnaire avant de faire des changements... de l'affecter à un objet que vous avez indiqué ci-dessus. C'est un peu plus compliqué mais si vous avez de solides type de l'objet que vous pouvez obtenir l'avantage de s'appuyer sur l'IDE pour la méthode/type de propriété recherches en avant. Pour moi, cela finit par économiser du temps puisque je n'ai pas à aller vérifier la classe de la méthode d'orthographe etc.
  • N'ai pas pensé à cela avant, mais il sonne comme une bonne idée.

InformationsquelleAutor tyrex | 2012-03-21