Userforms en Excel Con VBA
Userforms en Excel Con VBA
Importamos los nombres de los equipos de alguna fuente web donde estuvieran
disponibles.
Como comentamos, resulta interesante establecer convenciones para los nombres de los
controles, como empezar por Frm en el caso de los formularios, por Cmb los cuadros
combinados, Opt los botones de opcin, Txt las reas de texto, Num los controles de
nmero, Btn los botones o Lbl las etiquetas (del ingls Label), entre otras. De esta forma
podremos encontrar rpidamente el nombre de nuestro control en cuanto comencemos a
escribir en el cdigo sus primeras letras siguiendo estas convenciones.
Ya tenemos un primer formulario con una determinada, pero debemos llamarlo desde
nuestra hoja Excel. Para ello, podemos volver a la hoja Excel e insertar en un botn de
formulario o alguna otra forma que nos permita asignar la accin correspondiente a abrir
el formulario. Elegimos Insertar > Forma > Rectngulo redondeado, quedando como
vemos en la imagen del principio de este post. Con botn derecho sobre esta forma
podemos establecer el texto que aparecer, y tambin Asignar macro, donde podemos
poner un nombre a la accin que se lanzar desde nuestra forma redondeada, y pulsar en
Nuevo. Esto nos llevar al cdigo VBA, digamos subrutina (Sub), donde podemos
indicar como accin que se nos muestre nuestro formulario. Como vemos, lo realiza el
procedimiento o mtodo Show sobre nuestro userform FrmCalendario.
Para asociar los datos que deben aparecer en los cuadros combinadosde los
clubes, debemos seleccionar el cuadro correspondiente y, en Propiedades, escribir
en RowSource el nombre de nuestra tabla con los equipos (en este caso Clubes).
Para actualizar los cuadros de texto con los goles seleccionados en los respectivos
controles de nmero, pulsando doble click sobre cada uno de los controles nos
crea directamente una seccin de cdigo, de nuevo Sub, donde podemos indicar el
cdigo a ejecutar cada vez que se modifica el valor del control de nmero (cada
vez que pulse el usuario). En este caso, lo que hacemos es asignar el valor del
control al rea de texto, como se ve en la imagen, para cada control.
Continuando con nuestro ejemplo de userforms VBA en Excel, lo que requerimos que
haga nuestro formulario es insertar un registro en la tabla Calendario. Para llevar a
As, podemos intuir que la primera instruccin selecciona la primera columna dentro
de la cabecera de nuestra tabla, y la segunda hace el efecto de situarnos al final de
esa columna de la tabla. Lo que queremos es desplazarnos debajo del ltimo registro
introducido, luego podremos desplazarnos hacia abajo una fila. Como vemos, la
tercera instruccin no realiza esto con carcter general, sino que nos sita en una
posicin fija, cuando nuestro botn de Aceptar deber desplazarse una posicin
abajo, variando conforme vayamos aadiendo registros. Por ello, esa instruccin no
nos servir, y en lugar emplearemos ActiveCell.Offset(1, 0).Select. En cualquier caso,
podemos copiar el cdigo generado por la macro, volver a nuestro userform en la
ventana de VBA, hacer doble click sobre el botn Aceptar y pegar el cdigo. A partir
de ah, vamos usando offset para desplazarnos y los valores de las celdas y controles
para escribir la informacin del formulario en las celdas correspondientes. El resultado
es el que vemos a continuacin:
Para el botn cancelar, lo nico que tenemos que hacer es volver al userform, dar
doble click al botn Cancelar, y en el cdigo indicar que se cancele la operacin,
cerrando el formulario mediante su descarga (unload):