Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplos Practicos de Macros y Codigo Vba
Ejemplos Practicos de Macros y Codigo Vba
DIRECTORIO TELEFONICO
Se puede encarar el problema anterior usando formularios, este método tiene la desventaja de que
el código se complica un poco, lo que no debería sorprendernos ya que una celda es un objeto mas
simple, pero como veremos, las ventajas superan a las desventajas
TICKET DE COMPRA
INFORMES
DIRECTORIO TELEFONICO
Este directorio telefónico se hará sin recurrir a formularios, simplemente pasaremos los datos que
introducimos en tres celdas en la Hoja1 y los pasaremos a la Hoja2, que llamaremos DIRECTORIO
Colocamos los rótulos verticalmente en las celdas coloreadas en azul y en las celdas F6,F7,F8 los
datos que serán pasados a la Hoja DIRECTIRIO pero colocados horizontalmente, luego de aplicar la
macro, disparada con el botón INTRODUCIR DATOS, todo debe quedar como se ve en la figura de
abajo
Para consultar el teléfono y la dirección de alguna persona, en esta ocasión lo haremos utilizando
fórmulas
colocamos en la celda B6, el apellido y nombre de la persona cuyos datos queremos obtener y en
la celda B7 la fórmula
Accedemos al formulario entrando al editor VBA (Alt+F11) luego vamos a Insertar y en el menú
desplegable que se abre pulsamos en UserForm
con cada uno de ellos se insertan objetos cuyas propiedades se pueden cambiar en el explorador
de propiedades ( también puede hacerse con código), Para que aparezca las propiedades de cada
objeto solo debemos pulsar en ellos, por ejemplo en la figura pueden verse las propiedades de un
botón al que se le han cambiado las propiedades Name y Caption, cada una de ellas tiene un
nombres por defecto; por ejemplo en la propiedad Caption pusimos" INSERTAR" (pues con este
botón insertaremos los datos) y en nombre "cmdInsertar" . Esto es muy importante a la hora de
programar porque ayuda la claridad del código (aunque ahora que lo pienso, hubiera sido más
claro poner "btnInsertar", esto es a nuestro criterio), hemos hecho lo mismo son los otros
controles por ejemplo al “TextBox1” lo cambiamos por “txtApellidoNombre”.
pero en este caso nos interesa el evento Cick. También podemos ver haciendo doble click en el
formulario( o con el botón derecho del mouse) todos los objetos que tenemos dentro del mismo
de esta manera haciendo doble Click en cada uno de los 6 botones podemos programarlos como
puede verse abajo
En programación no hay una sola forma de hacer las cosas, y es probable que haya otro algoritmo
más eficiente, el que está arriba me pareció fácil de entender, pero más adelante haremos otra
versión
Una de las tantas veces que fui a una librería, me encontré con una computadora en la que se
podían consultar, entre otras cosas, los libros que había en existencia, de un determinado autor. No
sé cómo lo habrán hecho pero ahora lo vamos a hacer con las macros de Excel en una suerte de
interacción usuario computadora.
Lo primero que hacemos es renombrar tres hojas como se ve en la figura
El “BOTON DE CONSLTA” tiene adjuntada la macro principal en el módulo1 y hay otras dos
macros en el módulo 2 y 3 como se puede ver el inspector de proyectos
"AUTORES" es la hoja donde se debería poner una base de datos con todos los autores sus
respectivos libros y el precio de cada uno. Dije se debería colocar una base de datos yo me voy a
conformar colocando una tabla con algunos autores de ciencia ficción, genero que, por cierto, me
gusta mucho
TABLA 1
Lo que ve al usuario después de apretar el “BOTON DE CONSULTA” es una pantalla que le pide
que introduzca un autor
módulo1
módulo2
módulo3
Como se puede ver, esta no es una macro aislada sino una aplicación completa con cierto aspecto
profesional, que por cierto, puede mejorarse
CONSULTA EN LIBRERIA (usando formularios)
La consulta de un autor en una librería usando formularios, es una aplicación completa muy similar
a la que no los usa, podríamos decir que es solo la manera en que se muestran los informes, aun
así podremos aprender muchas cosas útiles que nos podrán servir en el futuro
Empezamos cambiando el nombre de tres Hojas como se ve en la figura
en esta agregamos un calendario y un reloj en la parte superior, aparte de dos imágenes alusivas a
los libros, por otro lado la página se abre en pantalla completa y como se puede ver está el
"BOTON DE CONSULTA" donde al apretarlo aparece la pantalla para ingresar el autor a consultar.
Y aquí viene la diferencia, luego de aceptar aparece otra pantalla con el informe
Esta pantalla no es otra cosa que un formulario que contiene un “cuadro de lista” y el botón
"VUEVO INFORME" para hacer otra consulta,
Vamos a las macro: en la imagen podemos ver el inspector de proyectos
Como se ve tenemos muchos lugares donde colocar las macros como sin “ThisWorkbook”,
“UserForm1” y los módulos “Copia Rotulo”, “LimpiaInforme”, "MuestraFormulario" y "Principal"
En “ThisWorkbook” ponemos la macro para la fecha, reloj y pantalla completa seleccionando el
evento open del objeto Workbook (se bebe hacer clik en la pantalla)
Este objeto pertenece a la clase "CommandButton" como cualquier botón que está en un
formulario
2-ListBox1: pertenece a la clase "ListBox" y no hemos cambiado su nombre por defecto como se
muestra en la figura
Como vemos en la imagen estos dos objetos pertenecen a una clase mas general llamada
“UserForm”
1-“MuestraFormulario”: esta simple macro será llamada por Principal, para que mustre la pantalla
con el informe
2- “LimpiaInforme” : esta macro (Macro1) limoia los datos del rango "LIBROS" que está en la Hoja
"AUTOR"
3 “Copia Rotulo”: en este nódulo está la macro "CopiaRotulo" cuya función es copiar el rótulo de la
base de datos de la Hoja"autores" (en nuestro caso es una tabla) en la Hoja "AUTOR"
4-"Principal": este módulo tiene la macro "LibrosAutor" que es casi idéntica a la macro principal
de CONSULTA EN UNA LIBRERIA , la diferencia es que al final, cuando se sale del while, se
llama a la macro "MostrarFormulario" como se muestra con la flecha
Y así terminamos la explicación de CONSULTA EN LIBRERIA (usando formularios) que espero haya
sido clara.
Hasta la próxima.
TICKET DE COMPRA
Este es un tutorial que programa los tickets de compra de un supuesto delivey que vende plantas y
flores, llamadoBestFlowers, este negocio pega estos Tickets en las cajas donde pone la
mercadería con el detalle de los productos y su importe antes de enviarlos a destino.
Una característica, general de los tickets es su baja calidad estética y de impresión, con Excel esto
se mejora ya que se pueden insertar imágenes de logotipos o hacerlos con WordArt y tiene a su
disposición una amplia variedad de fuentes, por otro lado la impresión se hará con una impresora
común, papel de alta densidad y no con una ticketeadora (que por cierto tiene otras ventajas). Otra
característica de los tickets es que no se dejan filas vacías, como pasa con las facturas, nuestro
ticket cumplirá con esto también. Veamos dos ejemplos de lo que tenemos que hacer
;
.
como se ve los números de ticket son consecutivos y no hay filas vacías ya que estas se agregan a
medida que se integran nuevos productos. Obviamente para imprimir el segundo ticket hay que
vaciar los contenidos del primero.
Celda D12:
estas fórmulas deben ser copiadas, automáticamente, a las celdas B13 y D13 al colocar el código
de un producto en la celda A13, completándose la fila al colocar la cantidad de unidades. El
proceso continua a medida que se agregan nuevos códigos en las filas subsiguientes.
Estas acciones se hacen con la siguientes macros "Copiaformula" (módulo 1) y "AgregaFila"
(módulo 2).las cuales deben entrar en acción sin nuestra intervención, puesto que de lo contrario
se perdería el carácter automático.
Para hacer esto, "Copiaformula" y "AgregaFila" deben ser llamadas dentro de otra macro que se
activa cuando en un objeto cambia alguna propiedad, En nuestro caso puede ser el cambio de las
celdas D13 a D33 de la Hoja1, que podrían cambian de estar vacías a tener el código de un producto
en su interior. A este cambio se lo denomina EVENTO, en este caso nos interesa los eventos de las
Hojas o "Worksheet events" que responden a cambios en una Hoja, como el cambio en una celda o
rango de celdas (en nuestro caso sería el rango D13 : D33), pero este no es el único evento.
Podemos unvestigar todos los eventos disponibles para Worksheet, para esto hacemos doble click
en la Hoja1 del esplorador de proyectos veremos que si desplegamos la ventana "General"
aparecerá el objeto Worksheet asociado solo a esta Hoja, como se ve en la imagen
y haciendo click en el botón desplegable de la ventana que está al lado podemos elegir entre todos
los eventos del objeto Worksheet
por defecto está "SelectionChange", que es el evento que se produce cuando se selecciona una
celda o un rango de celdas. Pero podríamos haber usado cualquier otro de la lista que
considerasemos conveniente, en nuestro caso elegimos Change y automáticamente se genera la
macro "Workseet_Change"
Pulsando en "propiedades" podemos cambiar la propiedad Caption por Borrar y también cambiar
el nombre con que se lo identifica por "cmdBorrar" en lugar de "CommandButton1", esto último es
una buena costumbre ya que si hubieran muchos botones(cosa que ocurre con mucha frecuencia)
podríamos identificar rápidamente su función
El "cmdBorrar" es un objeto y está disponible en la ventana de objetos, luego haciendo click en el
botón desplegable lo seleccionamos y elegimos el evento Click.
COMBOBOX(CUADRO
COMBINADO)ORDENADO ALFABETICAMENTE
Es muy útil ordenar un ComboBox alfabéticamente, porque nos facilita enormemente encontrar los
datos, espacialmente cuando estos son muchos.
Supongamos que una agencia de alquiler de autos tiene todo su stock cargado en un ComboBox
inserto en un FORMULARIO, de manera tal que cuando se elige un marca aparezcan todas sus
características, tales como: estado, año, kilometraje, color, si esta en servicio o en el taller, si tiene
aire acondicionado, etc. Las marcas y modelos se buscaran por orden alfabético en un cuadro
combinado, apareciendo las características en los respectivos cuadros de texto (textBox). Para
esto la agencia disponen de una planilla con los datos antes mencionados que serán la fuente de
donde se cargará el ComboBox, como se muestra en la figura
el listado podría ser mucho más extenso ampliándolo mediante otro formulario.
Como se puede ver la planilla tiene 7 columnas, por lo tanto debemos elegir por cuál de ellas se
hará el orden. En este caso nos decidimos por la columna "B" en orden ascendente.
Empezamos abriendo el editor de VBA (Alt+F11) y diseñamos un Formulario al que renombramos
"usfMarcasyModelos", asimismo insertamos el modulo1 y el modulo2. El Formulario deberá ser
semejante al de la figura.
Luego cambiamos los nombres de los objetosTextBox1, TextBox2, TextBox3, TextBox4, TextBox5,
TextBox6 por txtCodigo, txtAño, txtColor, txtAire, txtDisponibilidad, txtUbicacion respectivamente y
al ComboBox1 por cmbMarcaModelo. Estos cambios de nombres son muy útiles para saber qué es
lo que contiene cada TextBox, en especial cuando hay muchos. Lo siguiente es cargar el
ComboBox con la columna según la cual queremos hacer el orden, para esto hacemos doble cick
en el formulario(que es un objeto) y nos aparece por defecto lo siguiente
que nos invita a programar el UserForm con el evento click, pero nosotros queremos el evento
initialize, por lo tanto lo buscamos en la parte superior derecha (donde dice click)
apareciendo, una vez borrada la macro "Userform_Click, la macro que tenemos que programar
a estas alturas ya tenemos cargado nuestro Cuadro Combinado pero sin estar ordenado
alfabeticamente
Para que esto ocurra debemos llamar a la macro ordenar_arrastre, señalada por la flecha(ubicada
en el módulo2)
Casi lo único que nos falta es programar una macro para que aparezca el estado del vehículo con
sus características, esta macro involucra al objeto "cmbMarcaModelo" y al evento "change"
Lo que viene es asignar una macro a un boton ( en la Hoja1) para que aparezca el Formulario
Esto es todo, en el próximo TUTORIAL veremos cómo agregar datos a la planilla y que estos sigan
ordenados.
ALTAS, BAJAS Y MODIFICACIONES
No se me ocurre que una empresa puede no necesitar una aplicación de ALTAS, BAJAS Y
MODIFICACIONES, en nuestro caso continuaremos con la empresa de renta de autos, que
apropósito se llama RODANDO RENTA CAR.
La descripción de la aplicación consiste en cuatro botones que al oprimirlos hacen surgir cuatro
pantallas (formularios), el primero muestra en que situación se encuentra cada vehículo en el
momento presente. El segundo es el formulario de ALTAS, el tercero el de MODIFICACIONES y por
último el de BAJAS, como se muestra
AGREGAR VEHICULOS
En esta pantalla se agregan nuevas unidades, en este punto se existe la posibilidad de agregar una
misma marca y modelo, pudiendo surgir un problema si no se los diferencia de alguna manera ya
que al buscarlos y querer hacer una consulta sobre ellos, solo aparecerá el primero que este en la
lista. La solución es muy simple, tomemos como ejemplo el SALEEN S331, si quisiéramos agrega el
mismo modelo podríamos diferenciarlo poniéndole el nombre SALEEN S331-2, como se ve en la
imagen
Esta es la pantalla en la que por múltiples motivos se considera que el vehículo ya no puede
pertenecer a la flota (destrucción total, mucho kilometraje, modelo antiguo, etc.)
Es de fundamental importancia que cuando se haga algún cambio en las pantallas de ALTAS,
BAJAS o MODIFICACIONES, este se actualice inmediatamente en cualquiera de los formularios.
También hay una advertencia en la pantalla de altas que nos alerta si algún campo quedo sin llenar,
otra advertencia en la pantalla de modificaciones que también nos advierte si estamos seguros de
las modificaciones que hicimos y por último una advertencia en la pantalla de bajas que nos dice si
estamos seguros de la eliminación.
Debo aclarar que las fotos de los autos se deben colocar en este caso en una carpeta junto con el
archivo de la aplicación, esto no sería necesario si ponemos la ruta completa donde se encuentra la
carpeta con los vehículos siendo muy sencilla la modificación del código.
Por último podríamos insertar la totalidad de la flota desde el formulario de ALTAS.
Ahora vamos a mostrar los códigos correspondientes a cada uno de los FORMULARIOS, con
algunos comentarios
CODIGO DE FLOTA DE VEHICULOS (INFORME)
CODIGO DE ALTAS
CODIGO DE BAJAS
CODIGO DE MODIFICACIONES
Como ya se dijo, al descargar el archivo, poner las imágenes en la misma carpeta que la aplicación.
He puesto muchas imágines para que se puedan agregar y eliminar.
Hasta el próximo tutorial.