Imprimir página | Cerrar ventana

Empezar con los diccionarios.

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Tus Funciones Favoritas & Aportaciones & Artí­culos
Descripción del foro: Para publicar código interesante, aportaciones y artículos
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86879
Fecha de impresión: 26/Marzo/2026 a las 15:29


Tema: Empezar con los diccionarios.
Publicado por: Sheerkhan
Asunto: Empezar con los diccionarios.
Fecha de publicación: 02/Marzo/2024 a las 12:02
Hola.
Como no he encontrado por la red información clara y concisa de como usar los diccionarios, dejo aquí unos pedacitos de código para los que quieran empezar a usarlos.
Toda la información que he visto around the world Cry solo mostraba el uso de los métodos en el mismo sub que creaba el diccionario, en fin que aquí está el resultado de unas cuantas horas de búsqueda y muchos ensayos prueba/error para que algún otro aprendiz como yo no tenga que perder un día y medio para empezar a trastear con los diccionarios,

Solo recordad que en herramientas/referencias debe incluirse la librería "microsoft vbscript regular expressions 5.5"

Gracias a todos los responsables del foro por esta maravillosa herramienta, sin ella muchos de nosotros aprenderíamos con más trompicones.

Por pura casualidad hoy es mi (64) cumpleaños, no esperéis tanto como yo para aportar al foro Smile.

Saludos
'****************** Pegadlo en un módulo ******************************

Option Compare Database
Option Explicit

'Delararlo en la cabecera del módulo no sé si será lo ortodoxo pero para mí ha sido "mano de santo"
Public Dict As Object

'
Sub AddDict()
'Crea el diccionario
Set Dict = CreateObject("Scripting.Dictionary")

Dim i As Variant

'Crea 5 claves como: "MiClave1" , valor 1
For i = 1 To 5

    Dict.Add "MiClave" & i, i

Next i

End Sub

Sub testDict()

'Para recorrerlo**************************
    Dim clave As Variant
        For Each clave In Dict.Keys
            Debug.Print clave & " - " & Dict.Item(clave)
            'MsgBox "Dict - " & clave & " - " & Dict.Item(clave)
        Next clave
'*****************************************
End Sub

Sub ClaveTest()
'Comprobar si existe una clave
Dim Key As Variant

If Dict.Exists("MiClave1") Then

    Debug.Print "SI"
Else
    Debug.Print "NO"
End If

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

End Sub

Sub CambiaValor()

Dim clave As Variant
    
'Comprueba si existe el diccionario
If Dict Is Nothing Then

    'MsgBox "No existe."
    Debug.Print "No existe"
    Exit Sub
End If
        
Dict("MiClave3") = 0

For Each clave In Dict.Keys
        
    Debug.Print clave, Dict.Item(clave)
    'MsgBox "Adddict - " & clave & " - " & dict.Item(clave)
Next clave

''*****************************************
End Sub

Sub Reordena()
'Un pequeño ejercicio para reasignar valores y dejar las de valor cero al final

Dim clave As Variant
Dim claveSig As Variant
Dim valor As Variant
Dim valorSig As Variant
Dim prefijo As String
    prefijo = "MiClave"
Dim i As Byte

If Dict Is Nothing Then

    Debug.Print "No existe el diccionario."
    Exit Sub
End If

i = 1

    For Each clave In Dict.Keys

        'Constuyo la clave siguiente
        claveSig = prefijo & i + 1
        
        'Recojo el valor de la siguiente clave
        valorSig = Dict.Item(claveSig)
        
        'Si el valor es cero
        valor = Dict(clave)
        If valor = 0 Then
        
            'Cambio el valor
            Dict(clave) = valorSig

            'Cambio el valor de la siguiente clave
            Dict(claveSig) = 0
            
        End If
        'En la penúltima salgo, la última ya será = 0
        If clave = "MiClave4" Then Exit For
        i = i + 1
    Next clave

For Each clave In Dict.Keys

    Debug.Print clave, Dict.Item(clave)
    'MsgBox "Dict - " & clave & " - " & Dict.Item(clave)
Next clave

End Sub



Respuestas:
Publicado por: Mihura
Fecha de publicación: 02/Marzo/2024 a las 12:20
Ok, gracias.

Para algunos será un comienzo.


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es



Imprimir página | Cerrar ventana