Llevaba un tiempo queriendo explicar el uso de la función Array, como código VBA, dentro de una macro.
Esta función se define de manera muy sencilla, con un único argumento, que corresponde a una lista de valores delimitados por comas.
Lo siguiente a explicar antes de emplear esta función ARRAY será identificar el código de los diferentes caracteres que correspondan a ciertas letras; es decir, sabemos que cada caracter/letra que podamos usar equivale a un código numerado entre 1 y 255 que especifica el caracter deseado, este caracter forma parte del conjunto de caracteres empleado por nuestro sistema.
Podemos realizar una prueba muy sencilla de esta equivalencia en nuestra hoja de cálculo. Escribimos en la celda A1
=CARACTER(FILA())
y arrastramos 255 filas hacia abajo, obteniendo un listado de equivalencias de cada uno de los 255 códigos con el caracter correspondiente.
En concreto, nuestros códigos buscados son los números 70, 69, 76, 73, 90, 32, 78, 65, 86, 73, 68, 65 y 68, en ese orden preciso.
Estamos listos para empezar a construir nuestra macro. Macro que tras su ejecución insertará un texto en nuestra hoja de cálculo.
Previo al código, explicaré dos funciones VBA que voy a emplear, y que tienen sentido al trabajar con grupos de valores (como es nuestro caso al trabajar con una matriz). Hablo de:
El código es el siguiente y lo incluiremos desde del editor de VBA (Alt+F11) en un módulo, como cualquier otra macro que deseemos ejecutar, lo que nos permitirá ejecutarla en cualquier hoja activa de nuestro libro de Excel:
Hemos conseguido que al ejecutar la macro feliz se introduzca en un rango definido por nosotros (A1:M1) unos caracteres determinados en un ARRAY (o matriz de valores); pero para darle un efecto diferente (como de caida) hemos empleado un bucle o ciclo tipo DO... LOOP UNTIL, de tal forma que el valor de cada celda del rango recorre todos los caracteres hasta encontrar el correspondiente al elemento de la matriz; además para ralentizar o retardar el proceso de ejecución, y poder visualizarlo mejor, he incluido una instrucción FOR...TO...NEXT.
Por ejemplo, para la primera celda del rango, y por tanto para el primer elemento de la matriz, la macro recorre todos los códigos de caracteres hasta igualarse al 70, cuya correspondencia es la letra F; y así sucesivamente para los 13 elementos de la matriz.
Hasta conseguir que en esas 13 celdas nos aparezca el texto:
'FELIZ NAVIDAD'
mensaje con el que me despido hasta el año que viene....
Esta función se define de manera muy sencilla, con un único argumento, que corresponde a una lista de valores delimitados por comas.
Lo siguiente a explicar antes de emplear esta función ARRAY será identificar el código de los diferentes caracteres que correspondan a ciertas letras; es decir, sabemos que cada caracter/letra que podamos usar equivale a un código numerado entre 1 y 255 que especifica el caracter deseado, este caracter forma parte del conjunto de caracteres empleado por nuestro sistema.
Podemos realizar una prueba muy sencilla de esta equivalencia en nuestra hoja de cálculo. Escribimos en la celda A1
=CARACTER(FILA())
y arrastramos 255 filas hacia abajo, obteniendo un listado de equivalencias de cada uno de los 255 códigos con el caracter correspondiente.
En concreto, nuestros códigos buscados son los números 70, 69, 76, 73, 90, 32, 78, 65, 86, 73, 68, 65 y 68, en ese orden preciso.
Estamos listos para empezar a construir nuestra macro. Macro que tras su ejecución insertará un texto en nuestra hoja de cálculo.
Previo al código, explicaré dos funciones VBA que voy a emplear, y que tienen sentido al trabajar con grupos de valores (como es nuestro caso al trabajar con una matriz). Hablo de:
- LBOUND(nombre_matriz,[dimensión]): que nos devuelve el subíndice más pequeño disponible para la dimensión indicada de la matriz.
- UBOUND(nombre_matriz,[dimensión]): que nos devuelve el subíndice mayor disponible para la dimensión indicada de la matriz.
El código es el siguiente y lo incluiremos desde del editor de VBA (Alt+F11) en un módulo, como cualquier otra macro que deseemos ejecutar, lo que nos permitirá ejecutarla en cualquier hoja activa de nuestro libro de Excel:
'macro para crear un texto determinado. Sub feliz() Dim primero, ultimo As Variant 'se definen los códigos de los caracteres a emplear con una matriz - ARRAY. Matriz = Array(70, 69, 76, 73, 90, 32, 78, 65, 86, 73, 68, 65, 68) primero = LBound(Matriz) ultimo = UBound(Matriz) 'damos formato al rango de celdas With Range("A1:M1") .Font.Name = "Arial" .Font.Size = 14 .Font.Bold = True .HorizontalAlignment = xlCenter End With For elto = primero To ultimo i = 1 'realizamos un ciclo DO LOOP UNTIL hasta que se consiga 'un valor definido en la matriz Do 'ralentiza el proceso For j = 1 To 500000 Next j 'fin del retardo i = i + 1 Cells(1, elto + 1).Font.ColorIndex = Int(Rnd() * 56) Cells(1, elto + 1).Value = Chr(i) Loop Until i = Val(Matriz(elto)) Next elto End Sub |
Hemos conseguido que al ejecutar la macro feliz se introduzca en un rango definido por nosotros (A1:M1) unos caracteres determinados en un ARRAY (o matriz de valores); pero para darle un efecto diferente (como de caida) hemos empleado un bucle o ciclo tipo DO... LOOP UNTIL, de tal forma que el valor de cada celda del rango recorre todos los caracteres hasta encontrar el correspondiente al elemento de la matriz; además para ralentizar o retardar el proceso de ejecución, y poder visualizarlo mejor, he incluido una instrucción FOR...TO...NEXT.
Por ejemplo, para la primera celda del rango, y por tanto para el primer elemento de la matriz, la macro recorre todos los códigos de caracteres hasta igualarse al 70, cuya correspondencia es la letra F; y así sucesivamente para los 13 elementos de la matriz.
Hasta conseguir que en esas 13 celdas nos aparezca el texto:
'FELIZ NAVIDAD'
mensaje con el que me despido hasta el año que viene....