Question : Dictionnaire Scripting

Salut des experts, sentiment du

I AM totalement sourd-muet à ce sujet car je ne peux pas obtenir le macro ci-dessous pour fonctionner - il est dans le file.

All que je veux faire doit créer une liste unique d'articles dans un dictionnaire et la produire à une feuille de travail. Ce ne peut pas être beaucoup plus facile. Je peux le faire avec une collection sans penser même cela mais… le

I ont même employé le dictionnaire Scripting avec succès dans plusieurs questions mais cette fois dans mon dossier d'essai, le dunno d'I, une brume a arrangé au-dessus de me.

Patrick
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
>Sub " de l'id= " codeSnippet819215 de
           
class= " lastRow de
>Attachments de " nom " de class= de
class= " valeur " de
>

de
le class= de
de >
class= de

Réponse : Dictionnaire Scripting

Patrick,

Quelques choses, qui sont adressées dans mon http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/A_3391-Using-the-Dictionary-Class-in-VBA.html d'article

1) À la différence d'une collection, vous ne pouvez pas se référer à des articles dans un dictionnaire using un index.  En revanche, dans un dictionnaire, vous pouvez seulement chercher un article simple si vous fournissez sa clef.  Ainsi, votre boucle :

    Pour I = 1 à dic. Compte
        . Cellules (I, « C ») = dic. Article (i)
    Après i

ne retirera pas des articles du dictionnaire.  En effet, en raison du dictionnaire « implicite ajouter » le comportement, cette boucle ajoute réellement de nouveaux articles au dictionnaire :)

2) Vous ajoutiez réellement la gamme comme clef, et pas la valeur de la cellule, dans votre première boucle :

    Pour chaque celle dans le rng
        Sinon dic.exists (celle) puis
            dic. Ajouter le celle, celle
        Finir si
    Prochain celle

Puisque chaque cellule est un objet différent, vous avez fini réellement vers le haut d'ajouter toutes ces cellules en tant que l'article et clef

******************

Ainsi, pour fixer le code :

1) Passer explicitement les valeurs des cellules, et pas les cellules elles-mêmes, au dictionnaire.  Ou, employer un transfert de rangée pour créer une rangée dans la mémoire, et puis faire une boucle par la rangée et passer les valeurs de rangée au dictionnaire

2) Faire du dumping sur les articles dans une rangée

3) Faire un transfert de rangée pour écrire les valeurs à la feuille de travail

Patrick
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
Dict_test secondaires ()
    
    Faible rng comme gamme
    Faible celle comme gamme
    Faibles dic_items comme variante
    Obscurcir I en tant que longtemps
    Obscurcir x comme variante
    
    Obscurcir dic comme Scripting.Dictionary
    Placer Scripting.Dictionary dic = nouveau
    dic.CompareMode = 1
    
    Avec les feuilles (« Sheet1 »)
        Placer le rng = la gamme (. Cellules (1, « A »). Cellules (. Rows.Count, « A »). Extrémité (xlUp))
    
        Pour chaque celle dans le rng
            Sinon dic.exists (celle. Valeur) puis
                dic. Ajouter le celle. Valeur, celle. Valeur
            Finir si
        Prochain celle
        
        dic_items = dic. Articles
        
        . [c : c] .ClearContents
        . [c1]. Remettre à la côte (dic. Compter, 1) = Application.Transpose (les dic_items)
    Finir avec
    
    Placer dic = rien
    
Finir le sous-marin
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us