userforms en excel con vba

Upload: eder-legua

Post on 20-Feb-2018

234 views

Category:

Documents


1 download

TRANSCRIPT

  • 7/24/2019 Userforms en Excel Con VBA

    1/5

    Userforms en Excel con VBA

    Los userformsproporcionan un mecanismo para disear y desarrollar interfaces grfica de

    usuario basadas en VBA(Visual Basic for Applications) en Excel.Estuvimos creando en la clase anterior una interfaz como la siguiente para insertar registros en

    una tabla Excel.

    Importamoslos nombres de los equipos de alguna fuente web donde estuvieran

    disponibles.

    Convertimoseste conjunto de datos en tabla, dotndola de un nombre como Clubes.

    Creamos la tablaCalendario en la que se irn almacenando los partidos disputados o

    planificados, con los datos que se muestran en la imagen.

    Creamos el esqueleto de un userform inicial mediante la ficha del Programador>Visual

    Basic; desde la ventana de visual basic, men Insertar> UserForm. De este modo nos

    aparece el userform con el contenido por defecto:

    http://www.cs.us.es/blogs/i1eg2013/files/2013/03/Userforms2.pnghttp://www.cs.us.es/blogs/i1eg2013/files/2013/03/Userforms1.png
  • 7/24/2019 Userforms en Excel Con VBA

    2/5

    A partir de ah, vamos arrastrando controles del cuadro de herramientas al

    userform. En nuestro caso, dos cuadros combinadospara los equipos local y visitante,

    dos botones de opcinpara indicar si el partido ya se ha disputado yreas de

    textocon contr oles de nmeropara ir introduciendo el nmero de goles del equipo local

    y visitante, adems del botncorrespondiente para aceptar la insercin del partido. Junto

    a ello, las pertinentes etiquetas para mostrar al usuario qu informacin introducir o

    seleccionar en cada control.

    Pinchando sobre el formulario y los distintos controles se activa la informacin

    correspondiente a las Propiedadesdel elemento seleccionado en cada momento, donde

    establecemos datos como el nombre para el formulario o control, el color de fondo, etc.

    Como comentamos, resulta interesante establecer convencionespara los nombres de los

    controles, como empezar por Frmen el caso de los formularios, por Cmblos cuadros

    combinados,Optlos botones de opcin, Txtlas reas de texto, Numlos controles de

    nmero, Btnlos botones o Lbllas etiquetas (del inglsLabel), 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.

    http://www.cs.us.es/blogs/i1eg2013/files/2013/03/Userforms3.png
  • 7/24/2019 Userforms en Excel Con VBA

    3/5

    Ya tenemos un primer formulariocon 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 Showsobre nuestro userform FrmCalendario.

    Si guardamos lo que llevamos hecho, cerramos la ventana de Visual Basic y volvemos a

    nuestra hoja, ya podemos pulsar en el botn y se abrir nuestro formulario.

    A partir de aqu, habr que crear la funcionalidad correspondiente a los controles y

    botones del formulario, de forma similar a lo explicado en el vdeo anterior. Para ello,

    habr que volver a la ventana de visual basic, y completar varios pasos:

    Para asociar los datos que deben aparecer en los cuadros combinadosde los

    clubes, debemos seleccionar el cuadro correspondiente y, en Propiedades, escribir

    en RowSourceel 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

    http://www.cs.us.es/blogs/i1eg2013/files/2013/03/Userforms5.pnghttp://www.cs.us.es/blogs/i1eg2013/files/2013/03/Userforms4.png
  • 7/24/2019 Userforms en Excel Con VBA

    4/5

    cabo este proceso, podemos apoyarnos en la funcionalidad degrabacin de macrosde

    Excel, y ver el cdigo que se generara si realizamos el proceso de forma automtica.

    De esta forma, no necesitaremos conocer a priori los detalles de todo el cdigo a

    generar, aunque siempre sea recomendable conocerlo en la mayor medida posible.

    En cualquier caso, la grabacin facilitar la tarea. Seguimos los pasos:

    1. Iniciamos la grabacin de la macro.

    2. Ya iniciada, nos situamos en la cabecera de la tabla, en la primera columna.

    3. Pulsamos la combinacin de teclas Ctrl + Flecha abajo, situndonos en el ltimo registro

    (fila) introducido.

    4. Pulsamos la flecha hacia abajo, para escribir en la primera fila posterior a la tabla.

    5. Escribimos cualquier texto en la celda, y nos desplazamos hacia la derecha con el

    tabulador, volviendo a escribir otro texto cualquiera en la siguiente celda. Como vemos,

    esto crea una nueva fila en la tabla, que es lo que queramos.6. Paramos la macro con el botn de Stop.

    El texto generado contendr instrucciones que nos interesar, y otras que veremos

    que no nos son de utilidad.

    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 Acti veCell .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:

    http://www.aulaclic.es/excel2007/t_18_1.htmhttp://www.aulaclic.es/excel2007/t_18_1.htmhttp://www.aulaclic.es/excel2007/t_18_1.htmhttp://www.cs.us.es/blogs/i1eg2013/files/2013/03/Userforms6.pnghttp://www.aulaclic.es/excel2007/t_18_1.htm
  • 7/24/2019 Userforms en Excel Con VBA

    5/5

    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):

    http://www.cs.us.es/blogs/i1eg2013/files/2013/03/Userforms8.pnghttp://www.cs.us.es/blogs/i1eg2013/files/2013/03/Userforms7.png