|
Responder
|
| Autor | |
Sheerkhan
Asiduo
Unido: 01/Octubre/2011 Estado: Sin conexión Puntos: 284 |
Tema: Empezar con los diccionarios.Enviado: 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 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 .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 Editado por Mihura - 02/Marzo/2024 a las 13:32 |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 02/Marzo/2024 a las 12:20 |
|
Ok, gracias.
Para algunos será un comienzo.
|
|
![]() |
|
Responder
|
|
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |