Crear y utilizar un diccionario en VBA

Glen Alfaro 30 enero 2023
  1. requisitos previos
  2. Cree el objeto Dictionary usando VBA
  3. Agregar elementos en el objeto Dictionary usando VBA
  4. Devolver un valor en el Diccionario usando VBA
  5. Cambiar un valor en el Diccionario usando VBA
  6. Cuente el artículo en el Diccionario usando VBA
  7. Imprimir todas las claves y valores en el diccionario
Crear y utilizar un diccionario en VBA

El objeto Dictionary en VBA no está relacionado con el diccionario de idiomas, que usamos para saber el significado de las palabras.

En VBA, el objeto Dictionary es de alguna manera similar al objeto Colección en el almacenamiento de datos. La principal diferencia es que una Colección no puede:

  1. Comprobar si un artículo está en la colección
  2. Cambiar el valor de un artículo existente

Por supuesto, aún podemos usar Colección y crear soluciones para este problema, pero Diccionario ofrece estas soluciones con métodos predefinidos. Por lo tanto, Diccionario puede ser útil para tareas específicas, particularmente al recuperar un elemento determinado.

Este artículo demuestra cómo crear y utilizar el objeto Dictionary para realizar ciertas funcionalidades en su código VBA.

requisitos previos

El objeto Dictionary no viene con la biblioteca predeterminada de VBA. Por lo tanto, antes de utilizar completamente el objeto Dictionary, es necesario hacer referencia a la biblioteca Microsoft Scripting Runtime, incluido el objeto Dictionary.

  • Abrir archivo de Excel.
  • Desde la Pestaña Desarrollador, abre el Editor Visual Basic.
  • Desde la barra de herramientas Herramientas, haga clic en Referencias.
  • Marque la casilla de verificación Microsoft Scripting Runtime.

Ya está todo listo.

Cree el objeto Dictionary usando VBA

Ahora que el Microsoft Scripting Runtime está en las Referencias, el bloque de código a continuación demostrará cómo crear un objeto Dictionary.

Cree un objeto de la biblioteca Scripting.Dictionary, luego inicialícelo como un nuevo objeto.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

End Sub

Agregar elementos en el objeto Dictionary usando VBA

Sintaxis:

[DictionaryObject].Add([Key], [Item])

Parámetros:

[DictionaryObject] Requerido. El nombre del Diccionario
[Key] Requerido. Los datos por los que se referencia el Ítem dentro del Diccionario.
[Item] Requerido. Establece o devuelve el valor de un Item en el Diccionario

Podemos agregar elementos al Diccionario usando el bloque de código anterior. Los nombres (Glen, Myla, Katrina, Jose) se agregaron como clave y su edad respectiva como valores en el bloque de código a continuación.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add ("Glen", 25)
d.Add ("Myla", 49)
d.Add ("Jose", 58)
d.Add ("Katrina", 18)

End Sub

Devolver un valor en el Diccionario usando VBA

Con el Diccionario, podemos devolver un valor sabiendo la clave que le corresponde.

Sintaxis de retorno:

[Value] = [DictionaryObject](Key)

Cambiar sintaxis:

[DictionaryObject](Key) = [Value]

Parámetros:

[DictionaryObject] Requerido. El nombre del Diccionario
[Key] Requerido. Los datos por los que se referencia el Ítem dentro del Diccionario.
[Value] Requerido. Establece o devuelve el valor de un Item en el Diccionario

Usando la sintaxis, el valor de la clave Myla devolvió 49.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Debug.Print d("Myla")

End Sub

Producción :

49

Cambiar un valor en el Diccionario usando VBA

Con el Diccionario, podemos cambiar un valor sabiendo la clave que le corresponde.

Cambiar sintaxis:

[DictionaryObject](Key) = [Value]

Parámetros:

[DictionaryObject] Requerido. El nombre del Diccionario
[Key] Requerido. Los datos por los que se referencia el Ítem dentro del Diccionario
[Value] Requerido. Establece o devuelve el valor de un Item en el Diccionario

En el bloque de código a continuación, el valor de la clave Myla se cambió de 49 a 50 utilizando la sintaxis anterior.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

d("Myla") = 50

Debug.Print d("Myla")

End Sub

Producción :

50

Cuente el artículo en el Diccionario usando VBA

Podemos devolver el número de todos los elementos dentro del Diccionario usando el método Count.

Sintaxis Count:

[Value]= [DictionaryObject].Count

Parámetros:

[DictionaryObject] Requerido. El nombre del Diccionario
[Value] Devuelve el número de elementos del Diccionario

En el siguiente ejemplo, obtenemos el contenido del objeto d usando el método Count.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Debug.Print "There are " & d.Count & " items in the Dictionary."

End Sub

Producción :

There are 4 items in the Dictionary.

Imprimir todas las claves y valores en el diccionario

El bloque de código a continuación imprimirá todas las claves y valores dentro del Diccionario usando un bucle.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Dim Key as Variant

For Each Key In d.Keys
    Debug.Print Key, d(Key)
Next

End Sub

Producción :

Glen           25 
Myla           49 
Jose           58 
Katrina        18