Hace mucho tiempo que estoy buscando el momento para poder subir al blog una explicación de como crear un UserForm (o sea un formulario) desde el Editor de VBA de Excel, esto es , vamos a generar un formulario personalizado.
Lo primero es tener claro cómo será este formulario, y para no complicar demasiado el asunto, he decidido que nuestro formulario tendrá dos ComboBox (también conocido como Cuadro combinado) y un TextBox (o Cuadro de texto), así como un CommandButton (o Botón de comando), además de algunas Labels (o Etiquetas).
La idea, para no dispersarme demasiado es crear la estructura de un Formulario en el que aparezca junto a una etiqueta un Cuadro combinado, y debajo de estos una nueva etiqueta junto a un Cuadro de texto, acabando el formulario con un Botón de comando que ejecute una acción. Quedará algo así:
La idea es que mediante uno de los ComboBox podamos elegir una de las hojas del libro activo, mientras que con el segundo Combobox seleccionemos de un listado dado uno de sus elementos, para que una vez añadido un valor en el TextBox, al presionar el CommandButton copie dicho valor en la hoja correspondiente y en el lugar asociado al elemento del segundo Combobox
Veamos cual es nuestro Libro de trabajo, sobre el cual va a funcionar nuestro Userform. En este Libro existen tres hojas ('España', 'México' y 'Colombia'),y una más ('Consolidado'), donde se Consolidan las anteriores; cada hoja (cada país) tiene un listado de clientes único para todas ellas, que corresponden a un número de unidades de un determinado producto y colocadas en las mismas referencias:
Como ya conocemos nuestro Libro de trabajo, podemos empezar a crear el formulario, para ello abriremos el Editor de VBA presionando Alt+F11, y buscaremos el Menú Insertar > UserForm:
Al insertar el UserForm se abrirá una ventana con los Controles que podemos insertar en nuestro formulario, para esto sólo es necesario hacer click sobre el Control elegido (para nosotros 'Etiqueta','Cuadro de texto','Cuadro combinado' y 'Botón de comando', e ir agregándolos en el espacio del formulario. Nos aprovecharemos del punteado (del 'grid') para alinear lo mejor posible, en primera instancia, los distintos controles añadidos, hasta conseguir:
La primera parte está lista, aunque la podemos (y debemos) personalizar más, ya que las distintas etiquetas y botones serían mucho más descriptivas si, en lugar de 'label1', 'label2', 'label2' o 'CommandButton1', aparecieran nombres algo más identificativos a lo que se refiere ('País', 'Cliente', 'Unidades' o 'Insertar').
Estas modificaciones las conseguiremos buscando la ventana de Propiedades de cada una de ellas, en concreto la Propiedad Caption:
Una vez cambiada la propiedad Caption para 'label1', 'label2', 'label2' y 'CommandButton1' nuestro formulario tendría este aspecto:
Ya podemos dar por finalizado la primera parte de creación de nuestro formulario, el aspecto es el que queríamos... claro, que ahora queda lo más importante, darle poder!!!.
Para asignarle alguna funcionalidad a este formulario (y que haga lo que queríamos), tendremos que añadir cierto código VBA a cada uno de los Controles añadidos, en concreto a los dos ComboBox, al TextBox y al CommandButton, para ello haremos doble click sobre cada uno de ellos, lo que nos abrirá una ventana de código donde poder incluir nuestras instrucciones y procedimientos...
Lo que dejaré para la siguiente entrada.
Lo primero es tener claro cómo será este formulario, y para no complicar demasiado el asunto, he decidido que nuestro formulario tendrá dos ComboBox (también conocido como Cuadro combinado) y un TextBox (o Cuadro de texto), así como un CommandButton (o Botón de comando), además de algunas Labels (o Etiquetas).
La idea, para no dispersarme demasiado es crear la estructura de un Formulario en el que aparezca junto a una etiqueta un Cuadro combinado, y debajo de estos una nueva etiqueta junto a un Cuadro de texto, acabando el formulario con un Botón de comando que ejecute una acción. Quedará algo así:
La idea es que mediante uno de los ComboBox podamos elegir una de las hojas del libro activo, mientras que con el segundo Combobox seleccionemos de un listado dado uno de sus elementos, para que una vez añadido un valor en el TextBox, al presionar el CommandButton copie dicho valor en la hoja correspondiente y en el lugar asociado al elemento del segundo Combobox
Veamos cual es nuestro Libro de trabajo, sobre el cual va a funcionar nuestro Userform. En este Libro existen tres hojas ('España', 'México' y 'Colombia'),y una más ('Consolidado'), donde se Consolidan las anteriores; cada hoja (cada país) tiene un listado de clientes único para todas ellas, que corresponden a un número de unidades de un determinado producto y colocadas en las mismas referencias:
Como ya conocemos nuestro Libro de trabajo, podemos empezar a crear el formulario, para ello abriremos el Editor de VBA presionando Alt+F11, y buscaremos el Menú Insertar > UserForm:
Al insertar el UserForm se abrirá una ventana con los Controles que podemos insertar en nuestro formulario, para esto sólo es necesario hacer click sobre el Control elegido (para nosotros 'Etiqueta','Cuadro de texto','Cuadro combinado' y 'Botón de comando', e ir agregándolos en el espacio del formulario. Nos aprovecharemos del punteado (del 'grid') para alinear lo mejor posible, en primera instancia, los distintos controles añadidos, hasta conseguir:
La primera parte está lista, aunque la podemos (y debemos) personalizar más, ya que las distintas etiquetas y botones serían mucho más descriptivas si, en lugar de 'label1', 'label2', 'label2' o 'CommandButton1', aparecieran nombres algo más identificativos a lo que se refiere ('País', 'Cliente', 'Unidades' o 'Insertar').
Estas modificaciones las conseguiremos buscando la ventana de Propiedades de cada una de ellas, en concreto la Propiedad Caption:
Una vez cambiada la propiedad Caption para 'label1', 'label2', 'label2' y 'CommandButton1' nuestro formulario tendría este aspecto:
Ya podemos dar por finalizado la primera parte de creación de nuestro formulario, el aspecto es el que queríamos... claro, que ahora queda lo más importante, darle poder!!!.
Para asignarle alguna funcionalidad a este formulario (y que haga lo que queríamos), tendremos que añadir cierto código VBA a cada uno de los Controles añadidos, en concreto a los dos ComboBox, al TextBox y al CommandButton, para ello haremos doble click sobre cada uno de ellos, lo que nos abrirá una ventana de código donde poder incluir nuestras instrucciones y procedimientos...
Lo que dejaré para la siguiente entrada.
Muy buena la explicación de UserForm, lástima que supere muchísimo mis conocimientos de Excel, de Macros no se en absoluto nada, pero guardare su explicación muy bien ya que al final para mi hobby estoy convencido que me hará mucha falta.
ResponderEliminarUn Cordial Saludo.
Lázaro.
Muy bueno, gracias por compartir tantos conocimientos, eso te hace grande.
ResponderEliminarHola podrían ayudarme tengo que hacer un formulario para ingresar datos en una hoja, pero lo que necesito es que el formulario este en la hoja 1 y en la hoja 2 ingrese los datos, pero no me queda no se de programación y ya tiene muchos años que aprendi a hacer eso y por no usarlo se olvida. Necesito que el formulario tenga dos logotipos de la empresa. Me podrias dar unas muestras de como hacerlo o unas imágenes para hacerlo directamente conforme lo vaya diseñando. Agradeceria la ayuda.
ResponderEliminarHola Ezequiel,
Eliminarmostrar el UserForm en la Hoja1 es sencillo, basta asociarlo a un botón de esa hoja o a algún evento dentro de la ventana de código de la Hoja1.
Para llevar los datos a la Hoja2, bastaría añadir la hoja en las sentencias correspondientes, por ejemplo, para llevar el valor del TextBox1 a la celda A1 de la Hoja2:
Hoja2.Range("A1").Value=TextBox1.Value
Para insertar imágenes (Logos) inserta en el UserForm el Control 'Imagen' y dentro de las propiedades de ese control busca 'Picture', te mostrará un buscador donde seleccionar la imagen.
Un cordial saludo
hola te podría enviar el archivo que tengo y me pongas que es lo que estoy haciendo mal, si debe llevar imágenes, pero no me acuerdo como.
EliminarHola Ezequiel,
Eliminarpuedes enviarlo a
excelforo@gmail.com
con la explicación concreta del problema.
Saludos
Buenas tardes disculpen cuales son las características de salida de resultados con UserForm ayuda por favor es de urgencia
ResponderEliminarHola Alejandra,
Eliminara qué tipo de características de salida te refieres??
Los datos devueltos desde un Userform son del tipo en que hayan sido definidos en la programación...
si un TextBox lo has definido como Double, devolverá un número decimal, o si ha sido String será texto, etc...
Saludos