Cuestión : Diccionario Scripting

Hola los expertos, sensación del

I total muda sobre esto como no puedo conseguir la macro abajo para trabajar - está en el file.

All que quiero hacer debo crear una lista única de artículos en un diccionario y hacerla salir a una hoja de trabajo. No puede ser mucho más fácil. Puedo hacerlo con una colección sin incluso el pensamiento de él pero… el

I incluso ha utilizado el diccionario Scripting con éxito en varias preguntas pero este vez en mi archivo de ensayo, el dunno de I, una calina ha colocado sobre me.

Patrick
class= > " claro " del
> del " codeSnippet " del class= del
class= " lineNumbers " del
class= del
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 notpretty " del class= " del id= " codeSnippet819215 del
           
class= " lastRow del
>Attachments del " nombre " del class= del class= " valor " del
del >

del
el class= de
del >
class= del

Respuesta : Diccionario Scripting

Patrick,

Algunas cosas, que se tratan en mi http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/A_3391-Using-the-Dictionary-Class-in-VBA.html del artículo

1) Desemejante de una colección, usted no puede referir a artículos en un diccionario usar un índice.  Algo, en un diccionario, usted puede traer solamente un solo artículo si usted suministra su llave.  Así pues, su lazo:

    Para i = 1 a dic. Cuenta
        . Células (i, “C”) = dic. Artículo (i)
    Después i

no sacará artículos del diccionario.  De hecho, debido a el diccionario “implícito agregar” el comportamiento, ese lazo está agregando realmente nuevos artículos al diccionario:)

2) Usted agregaba realmente la gama como la llave, y no el valor de la célula, en su primer lazo:

    Para cada celle en rng
        Si no dic.exists (celle) entonces
            dic. Agregar el celle, celle
        Terminar si
    Celle siguiente

Puesto que cada célula es un diverso objeto, usted terminó realmente encima de agregar todas esas células como artículo y llave

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

Así pues, fijar el código:

1) Pasar explícitamente los valores de las células, y no las células ellos mismos, al diccionario.  O, utilizar una transferencia del arsenal para crear un arsenal en memoria, y entonces colocar con el arsenal y pasar los valores del arsenal al diccionario

2) Descargar los artículos en un arsenal

3) Hacer una transferencia del arsenal para escribir los valores a la hoja de trabajo

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:
La más dict_test secundarios ()
    
    Rng dévil como gama
    Celle dévil como gama
    Dic_items déviles como variante
    Amortiguar i como de largo
    Amortiguar x como variante
    
    Amortiguar dic como Scripting.Dictionary
    Fijar Scripting.Dictionary dic = nuevo
    dic.CompareMode = 1
    
    Con las hojas (“Sheet1”)
        Fijar el rng = la gama (. Células (1, “A”). Células (. Rows.Count, “A”). Extremo (xlUp))
    
        Para cada celle en rng
            Si no dic.exists (celle. Valor) entonces
                dic. Agregar el celle. Valor, celle. Valor
            Terminar si
        Celle siguiente
        
        dic_items = dic. Artículos
        
        . [c: c] .ClearContents
        . [c1]. Volver a clasificar según el tamaño (dic. Contar, 1) = Application.Transpose (los dic_items)
    Terminar con
    
    Fijar dic = nada
    
Terminar el submarino
Otras soluciones  
 
programming4us programming4us