Lo prometido es deuda, y aunque he
andado algo liado este verano hago esta entrada para cumplir con lo que os
comenté en la entrada Simulación, movimiento e impacto en Excel, un simple ejemplo de cómo
mostrar movimiento con Excel. No es la forma que indicaba en la entrada, pero
sí la más sencilla para mostrar un movimiento. Insisto es una entrada referida a una curiosidad (una
pequeña frivolité), por eso está dentro de la categoría de Exceltricidades.
No hay entrada de estricta aplicación administrativa hoy.
Haciendo una excepción sobre mi política
de no introducir entradas sobre código VBA cuando aún quedan muchísimas cosas
que contar sobre el propio Excel, indicaré las dos Subrutinas necesarias. Una sale
prácticamente tal cual de la grabación de una macro con el grabador.
En primer lugar construiremos el rótulo
que queremos desplazar. En este caso como va a subir de abajo a arriba, lo construyo
a partir de la fila 59.
La
sensación de movimiento la conseguimos simplemente sucediendo eliminaciones de
rangos de celdas, en este caso el rango D2:CL2, que cubre la longitud más larga
del rótulo. La macro que elimina ese rango es:
Veréis que si grabáis con el grabador
una macro que seleccione el rango y elimine las celdas subiendo las demás hacia
arriba para ocupar el hueco, obtenéis una macro prácticamente igual que esta. Simplemente
he eliminado la parte que selecciona el rango.
Ahora basta con repetir muchas veces esa
macro, para ello utilizamos la siguiente subrutina. Básicamente es un bucle que
repite tantas veces como le indiquemos lo que programemos dentro del mismo.
Esta rutina es muy fácil, es lo mismo (pero infinitamente más eficiente) que repetir entre Sub y End Sub 200 veces Macro1.
Ahora simplemente coloco un botón de
comando a la derecha de la página (fuera del área que va a ocupar el rótulo) y
le asigno la Macro “Letsmove” para iniciar el movimiento del rótulo cuando
ejecutemos el botón de comando.
La calidad del vídeo no es la mejor pero
es suficiente para mostrar la idea de movimiento en Excel. Como he dicho antes
no es la forma en la que movería los marcianos en caso de querer hacer una
simulación de máquina recreativa, es simplemente la manera más fácil de hacer
una marquesina que nos muestre un efecto de movimiento en Excel. A partir de
aquí los más inquietos podréis intentar hacer algo más sofisticado, hay mucho
margen…
Por ejemplo que se repita indefinidamente el rótulo...
¿Repitiendo el rótulo una y otra vez abajo hasta la celda 20.000 y que N llegue hasta ese número?... No, claro que no!. Basta con pegar el rango que cortamos en un rango por debajo del final del rótulo original dentro de la Macro1. A medida que desaparece por arriba, se va construyendo por abajo.
Estas pequeñas trivialidades en principio parecen no servir de mucho, pero como todo en la vida, nunca se sabe dónde o de qué modo vamos a poder aplicarlas. Esto me recuerda lo que comenta Steve Jobs sobre la caligrafía en el vídeo de la derecha...
Por cierto, estoy terminando una nueva aplicación para practicar inglés. En breve la colgaré en Xcl NT docs.
4 comentarios:
Hola,
Estoy empenzando con VBA porque veo que realmente es útil. No es por ser tiquismiquis, pero ¿No tienes que definir la variable?. He leído que hay que hacerlo...
¿Me puedes recomendar algún manual o curso para aprender VBA?
Gracias y felicidades por el blog.
Hola Laura,
Hombre,... desde un punto de vista purista es conveniente declarar las variables. Sobre todo porque aprovechas mejor la memoria cuando trabajas con programas muy grandes que requieren ahorrar cada bite. Pero está claro que no es el caso del ejemplo...
El tema era hacer un ejemplo lo más simple posible, y como no consume memoria no definí la variable, que como supongo que ya sabrás hace que por defecto VBA utilice una variable "Variant" que es como una variable "Universal".
Personalmente, cuando hago programas que de antemano se que no van a andar cortos de memoria no defino la variable.
Saludos y gracias por el comentario.
Hola otra vez,
Eso pensaba yo, que no era necesario, pero para probar (estoy empezando con prueba y error), quité la definición de la variable en otro programa que tengo y no funciona. Seguro que he hecho algo mal.
Ya te digo que estoy empezando... :(. Para hacerlo un poco más fácil te pedía que me recomendaras un manual o curso. ¿?.
Muchas gracias.
Hola Laura,
Supongo que te aparece un mensaje que pone "Error de compilación, no se ha definido la variable". Si es así, la solución es muy sencilla.
Comprueba que el programa que comentas no ha establecido como obligatorio definir las variables. Lo verás si al principio del código aparece la instrucción "Option Explicit". También podrías tenerlo seleccionado en la ventana de opciones de la ficha del Editor. Búscala en Herramientas-Opciones. Es un check box que pone Requerir declaración de variables, (pero creo que debería estar desactivado por defecto).
Es por esto que aún no he empezado a hablar sobre código VBA en el blog, es todo un mundo y todo está relacionado, y es difícil empezar a hablar de ello sin hablar antes de lo elemental.
Creo que lo estás haciendo bien, prueba y error es como hemos aprendido casi todos.
Para que sea menos frustrante tener una visión inicial está bien que utilices un manual que te ayude a familiarizarte con el editor, objetos, colecciones, propiedades, metodos,... Hay muchos y supongo que cualquiera es válido para ese fín.
Luego, para avanzar deberás investigar, la propia ayuda de VBA, internet, libros, probar, enfadarte, alegrarte,... Tener claro lo que necesitas y pelearte con el programa hasta conseguirlo. Al principio es duro y se avanza lentamente pero con el tiempo el conocimiento crece en progresión geométrica. Merece la pena.
¡¡Ánimo!!
Publicar un comentario