2010-10-27 18 views
7

esto describe lo que estoy tratando de hacer.vba: devuelve el diccionario de la función

esto no funciona para mí, y no está claro por qué.

gracias de antemano por cualquier ayuda.

 Sub mySub() 
     dim myDict as Dictionary 
      myDict=new Dictionary 

       myDict=myFunc() 

     End Sub 

     Function myFunc() 
      dim myDict2 
       set myDict2 = new Dictionary 

        'some code that does things and adds to myDict2' 

      myFunc=myDict2 
     End Function 

Respuesta

19

Usted tendrá que utilizar la palabra clave SET en cualquier momento va a asignar un objeto en lugar de un valor :

Sub mySub() 
     dim myDict as Dictionary 
     set myDict = myFunc() 
    End Sub 

    Function myFunc() as Dictionary 
     dim myDict2 as Dictionary 
     set myDict2 = new Dictionary 
       'some code that does things and adds to myDict2' 
     set myFunc=myDict2 
    End Function 

Su código original también estaba creando myDict como un nuevo objeto Dictionary , luego reemplazándolo de inmediato por uno diferente. Puedes saltear ese paso.

+0

esto funciona con una ligera alteración si configura myFunc (1) = myDict2. pero luego esto crea un ciclo infinito. –

+1

No, no es un ciclo infinito. 'myFunction = Value' (o' SET myFunction = Object') es el equivalente VBA de 'RETURN Value' – BradC

+0

Y no quiere' myFunc (1) = ', solo quiere' myFunc = ', de lo contrario, está simplemente establezca el primer valor del diccionario para todo el otro objeto, que no es lo que desea. – BradC

Cuestiones relacionadas