Introducción al Uso de Formularios (UserForms) en VBA

Page 1


Introducciรณn al Uso de Formularios (UserForms) en VBA By Luis E Brito Copyright 2016


Copyright Š 2016 by Luis E Brito All rights reserved. This book or any portion thereof may not be reproduced or used in any manner whatsoever without the express written permission of the publisher except for the use of brief quotations in a book review.


Tabla de Contenidos Otros Libros Publicados por Luis E Brito Introducción Editor de Visual Basic (VBE) Ventana de Código Explorador de Proyectos Ventana de Propiedades Ventana de Inmediato Trabajando con Userforms y Controles Que es un Formulario (UserForm) Insertando un Formulario Cuadro de Herramientas Convención Utilizada para el Nombre de los Controles Como Insertar un Control Como dar Formato a los Controles Menú de Formato Programando el Formulario y Sus Controles Creando el Código de Formularios Pero, ¿Que es un Evento? Elaborando el Primer Formulario Diseño


Programando el Formulario y Controles Que significa este código Evaluando el Formulario Transferencia de Información entre el Formulario y la Hoja de Excel Declaraciones de Lectura Declaraciones de Escritura Utilizando un Formulario para Llenar una Tabla de Datos en una Hoja Preparando la Hoja Diseño del Formulario Programando el Formulario y sus Controles Comentarios Finales Acerca del Autor


Otros Libros Publicados por Luis E Brito VBA Excel Guía Esencial

Amazon US https://www.amazon.com/dp/B01M8K5120 Amazon México https://www.amazon.com.mx/dp/B01M8K5120


VBA Excel Modelo de Objetos

Amazon US https://www.amazon.com/dp/B01M674D09 Amazon México https://www.amazon.com.mx/dp/B01M674D09


VBA Excel UserForms

Amazon US https://www.amazon.com/dp/B01N63S43C Amazon México https://www.amazon.com.mx/dp/B01N63S43C


Introducción

Los formularios (UserForms) son una utilidad que presenta la aplicación Excel dentro del ambiente del editor de Visual Basic. Tienen la mala fama de ser más complicados de lo que realmente son y que requieren mucho trabajo, y por eso muchas veces el usuario prefiere introducir los datos directamente en la hoja en lugar de utilizar las bondades que le proporcionan los formularios. Entre estas bondades están un diseño enfocado en los datos que se requieren; la posibilidad de utilizar botones de opción, casillas de verificación, listas, cajas combinadas y otros controles para facilitar la entrada de datos en los formularios; facilidad para intercambiar información con las hojas de Excel y VBA utilizando procedimientos escritos en VBA. Para utilizar eficientemente los formularios es deseable tener un conocimiento básico del lenguaje VBA y del modelo de objetos de Excel, si necesitas revisar información sobre estos temas


te recomiendo que revises mis otros libros, los cuales te muestro en Otros Libros Escritos por Luis E Brito.


Editor de Visual Basic (VBE)

Para acceder a los formularios (Userforms) hay que entrar en el editor de Visual Basic (VBE). Esto se hace seleccionando en la cinta de menú la pestaña Desarrollador.

aparecerá el grupo código y dentro de este grupo el icono de Visual Basic.


Otra forma de acceder al editor de Visual Basic es con la combinación de teclas Alt + F11. En el ambiente de Visual Basic se presentan una serie de ventanas acopladas, de las cuales las más importantes son:

Ventana de Código Es la ventana donde se introducen los procedimientos, Sub y Funciones en módulos; y donde también aparecen los macros grabados por


el grabador de macros para su revisiรณn y ediciรณn, de ser necesario. Es el lugar donde se crean los programas utilizando VBA. Explorador de Proyectos Es un directorio en forma de รกrbol, donde aparecen los libros abiertos (proyectos), con carpetas para las hojas (worksheet), formularios y mรณdulos.


Ventana de Propiedades En la ventana de propiedades se muestran las propiedades de los elementos seleccionados, hojas, formularios, mรณdulos. Esta ventana cambiara de acuerdo al objeto seleccionado, mostrando las propiedades del objeto que pueden ser establecidas o modificadas en esta ventana.


Ventana de Inmediato Es una ventana donde el usuario puede realizar la evaluación de expresiones y obtener resultados inmediatos. Por ejemplo, puede utilizarse como una calculadora y obtener resultados en la ventana. Para realizar una operación donde se requiera una respuesta debe comenzarse la instrucción con el signo de interrogación ( ? )

Para realizar el manejo de objetos, como por ejemplo cambiar el valor en una celda, no se necesita colocar el signo de interrogación. Si deseamos conocer el valor que está en la celda A1 de la Hoja1, si necesitamos colocar el signo de interrogación antes de la instrucción.


Trabajando con Userforms y Controles

Una UserformName es un objeto (Clase) dentro del proyecto (libro) donde es creado, y los controles incluidos dentro de la forma constituyen propiedades del objeto tipo UserFormName. Los controles incluidos constituyen también objetos y tienen sus propias propiedades.

Para separar los objetos de las propiedades y métodos se utiliza el operador punto. Así el objeto UserForm1 tiene una propiedad TextBox1, el cual es un objeto creado dentro del formulario, y que devuelve un objeto tipo TextBox, el cual tiene una


propiedad BackColor, que se ha establecido con la función RGB. Que es un Formulario (UserForm) Una forma o formulario (UserForm) es esencialmente una caja de dialogo construida al gusto y necesidad del usuario, de allí su nombre en inglés: User: usuario y Form. Forma o formulario. El formulario está constituido por la forma propiamente dicha y por los diferentes controles. El formulario puede pensarse como un contenedor, un espacio para colocar los diferentes controles. Insertando un Formulario Para insertar un formulario, primero hay que abrir el editor de Visual Basic, en la barra de menú hacer clic en la pestaña insertar, aparecerá un menú desplegable con las opciones para insertar: Procedimiento, UserForm, Módulo, Módulo de Clase y Archivo.


También se puede insertar utilizando el icono en la barra de menú.

Al hacer clic en UserForm aparecerá un formulario vacío, con el nombre UserForm1 en la barra de título, se mostrará una caja de herramienta con los controles predeterminados. También aparecerá una carpeta con el nombre Formularios y el formulario UserForm1; en la


ventana de propiedades propiedades de UserForm1.

aparecerรกn

las

Cuadro de Herramientas El cuadro o caja de herramientas contiene un conjunto de iconos (15 predeterminados).


Los iconos representan controles que pueden ser incorporados al formulario en la medida que se requieran. Si se necesitan controles adicionales, se pueden añadir en la barra de menú del VBE, hacer clic en herramientas y seleccionar controles adicionales. Descripción de los Controles A continuación, describiremos brevemente los controles:




Convención Utilizada para el Nombre de los Controles Cuando un control es insertado en el formulario VBA le asigna un nombre genérico por defecto, a los TextBox les asigna el nombre TextBox seguido de un número en secuencia, así al primer TextBox se le asigna el nombre TextBox1, el segundo TextBox2 y así sucesivamente. A los formularios les asigna el nombre UserForm1, UserForm2, etc. A las etiquetas les asigna el nombre Label1, Label2, etc y así para el resto de los controles. Sin embargo, los controles tienen la propiedad Name que permite cambiar el nombre del control. Se recomienda colocar un nombre que comience con un prefijo indicativo del tipo de control utilizado, seguido, sin dejar espacios, de un nombre descriptivo, que facilite su identificación. Esta es una recomendación, no es una regla obligatoria, pero cuando se trabaja con muchos controles es de gran ayuda.


A continuación, se muestra una tabla con los prefijos recomendados para los controles: Control (español)

Control (ingles)

Prefijo

Forma

UserForm

frm

Etiqueta

Label

lbl

Caja de Texto

TextBox

txt

Cuadro Combinado

ComboBox

cbo

Lista

ListBox

lst

Casilla de verificación

Checkbox

chk

Botón de opción Option Button opt Botón de alternar

Toggle Button tog


Control (español)

Control (ingles)

Prefijo

Marco

Frame

fra

Botón de comando

Command Button

cmd

Barra de tabulaciones

Tab strip

tab

Páginas múltiples

Multipage

mpg

Barra de Scroll Bar desplazamiento

scr

Botón de número

Spin Button

spn

Imagen

Image

img


Como Insertar un Control Para insertar un control simplemente hay que seleccionar el icono correspondiente en la caja de herramientas. Mover el cursor sobre el formulario, el cursor aparecerá como una cruz. Se hace clic en el ratón para anclar un borde de la caja y se mantiene presionado mientras se arrastra el cursor para crear una caja del tamaño requerido. Al soltar el botón se creará una caja con el control.

El control creado es un rectángulo, que en sus esquinas y en los laterales tienen unos pequeños cuadrados de color blanco que son unas agarraderas (handles). También aparecerá una


ventana de propiedades asociada al control creado. Una ventana para cada control y una ventana para el formulario. La ventana de cada control aparecerĂĄ cuando el control este seleccionado. Como dar Formato a los Controles Se puede dar formato a las formas en el modo de diseĂąo o mediante cĂłdigo en procedimientos en VBA. El formato de las formas estĂĄ asociado a una serie de propiedades. Las propiedades asociadas a el formato de las formas son, las unidades de las propiedades asociadas a dimensiones se expresan en pixeles: Height: Para cambiar el alto de las formas. Width: Para cambiar el ancho de las formas. Left: Para cambiar la distancia entre el borde lateral izquierdo de la forma y el borde izquierdo del control.


Top: Para cambiar la distancia entre el borde superior de la forma y el borde superior del control. BackColor: Para el color de fondo de la caja del control BackStyle: para dar estilo al fondo. BorderColor: para dar color a las líneas del borde de la caja del control. BorderStyle: para dar estilo a las líneas del borde. Font: Para cambiar las propiedades de la fuente: tipo de fuente, tamaño, resaltado, itálica. ForeColor: para cambiar el color del texto que se introducirá en la caja de texto, propiedad caption de los controles que tienen esta propiedad y para los elementos de las listas y cajas combinadas. En el modo diseño estas propiedades pueden ser cambiadas en las ventanas de propiedades. También pueden utilizarse las agarraderas que


muestran los controles cuando se encuentran seleccionados.

Cuando se coloca el cursor sobre las agarraderas de las esquinas aparecerá una flecha en diagonal de doble punta, haciendo clic y manteniendo presionado el botón del ratón y moviéndola permitirá cambiar la altura y anchura de la caja en forma simultánea. En los cuadros de los bordes inferior y superior aparecerá una doble flecha vertical, haciendo clic y manteniendo presionado movemos y cambiará el alto de la caja. Igual sucede con los cuadros que están en los laterales izquierdo y derecho, al moverlos cambiara el ancho de la caja. En cualquier parte del borde de la caja aparecerá una cruz de flechas de doble dirección, al hacer


clic y mantener presionado, cuando presenta esta forma, permitirá moverá la caja en cualquier dirección, al soltar el botón del ratón se anclará la caja en su nueva posición. Menú de Formato Otras herramientas de formato que ayudan a lograr una mejor apariencia del formulario se encuentran en el menú de formato. Para acceder a las herramientas de formato de las formas, hay que seleccionar la pestaña Formato en la barra de menú. Se desplegará un menú con las opciones mostradas en la figura.


Programando el Formulario y Sus Controles

El diseñar y colocar los controles es solo una fase del trabajo con formularios. Si no se crean procedimientos asociados a el formulario y sus controles estos son prácticamente inútiles, no realizaran ninguna acción. Creando el Código de Formularios Cada uno de los elementos que integran el formulario, incluyendo el formulario y sus controles son programables. Para iniciar la entrada de código: Se puede hacer doble clic sobre el control seleccionado o el formulario. Se puede hacer clic sobre el botón secundario del ratón (botón derecho) y se mostrará un menú contextual, entre las opciones se encuentra Ver código. Hacer clic en esta opción.


En la barra de menú se puede hacer clic en la pestaña Ver, aparecerá un menú de opciones, hacer clic sobre la opción código (F7). En la siguiente figura se muestra el menú contextual asociado a un control, desplegado al hacer clic en el botón secundario (botón derecho) del ratón.

Al iniciar la entrada de código utilizando alguno de los métodos mencionados aparecerá en la


ventana de código un módulo especial asociado al formulario. Este es un módulo diferente que no aparece listado dentro de la carpeta de módulos. Se inserta un módulo de formulario por cada formulario creado. En este módulo se muestran todos los procedimientos asociados a los controles y formulario. En el módulo aparece automáticamente un contenedor de código (shell), que asocia el control y un evento a un procedimiento. El nombre del procedimiento es el nombre del control Seguido de un guion bajo y el nombre de un evento.


Dentro de este contenedor se inserta el código para que se ejecuten las acciones, cada vez que ocurra el evento seleccionado. Pero, ¿Que es un Evento? Este quizás es uno de los conceptos más difíciles de entender. Entendemos relativamente fácil que los objetos tienen propiedades y métodos, pero la idea de eventos es más elusiva. Tratemos de entender lo que es un evento utilizando una analogía. Un evento es la ocurrencia de algo, algo sucede y tenemos programada una acción en caso de que suceda. Por ejemplo, si comienza a llover, esto es un evento, para lo cual nuestra acción es sacar el paragua para no mojarnos. Con los formularios y sus controles también podemos programar procedimientos para que reaccionen a eventos, es decir que hagan una acción cuando ocurre el evento. Un evento puede ser cambiar el valor de una caja de texto, cambiar


el valor de una barra de desplazamiento, hacer clic en un botón de comando y muchos otros. Los eventos que están asociados a los formularios y sus controles están claramente establecidos y pueden ser revisados en el examinador de objetos, o en la misma ventana de código en el menú desplegable que se ubica en la esquina superior derecha de la ventana.

Para crear un contenedor de código asociado a un evento. Primero seleccionamos en el menú desplegable de la izquierda el nombre del control, y en el menú de la derecha el evento que debe ocurrir para que se ejecute el procedimiento.


Por ejemplo, para un control del tipo botรณn de comando existen los siguientes eventos:

Siendo el evento de uso mรกs frecuente Click. Para los controles que recogen informaciรณn como cajas de texto (TextBox), Barras de desplazamiento (Scroll Bar) y otros el evento mรกs utilizado es el evento Change.


Elaborando el Primer Formulario

Aquí vamos a realizar un ejemplo bastante sencillo para aplicar lo que hemos aprendido hasta ahora. Vamos a crear un formulario para realizar la multiplicación de dos números y colocar el resultado en una caja de texto. Diseño El formulario va a consistir de tres cajas de texto, dos para los valores de entrada y una para el resultado, tres controles de etiqueta. Dos botones de comando, uno para ejecutar la operación de multiplicación y otro para borrar los resultados.


Los controles utilizados, los valores de las propiedades Name (nombre) y Caption (texto) se muestran en la siguiente tabla. Tipo de Control Caja de Texto Caja de Texto Caja de Texto Etiqueta Etiqueta Etiqueta Bot贸n de Comando Bot贸n de Comando

Name

Caption

txtValA txtValB txtValC Label1 Label2 Label3 cmdMultiplicar

Valor A Valor B Resultado Multiplicar

cmdBorrar

Borrar

Programando el Formulario y Controles Los c贸digos de los procedimientos en el m贸dulo del formulario para que se ejecuten las operaciones son:


Dim A As Double Dim B As Double Dim C As Double Private Sub txtValA_Change() A = Val(frmEjemplo2.txtValA.Value) End Sub Private Sub txtValB_Change() B = Val(frmEjemplo2.txtValB.Value) End Sub Private Sub cmdMultiplicar_Click() C=A*B frmEjemplo2.txtValC.Value = C End Sub

Private Sub cmdBorrar_Click() frmEjemplo2.txtValA.Text = " " frmEjemplo2.txtValB.Text = " "


frmEjemplo2.txtValC.Text = " " frmEjemplo2.txtValA.SetFocus End Sub

Que significa este código Primero se declaran las variables en la parte superior del módulo para que estén disponibles para todos los procedimientos. Dim A As Double Dim B As Double Dim C As Double

El control de caja de texto txtValA se asocia a un evento Change para crear un procedimiento que asigne el valor introducido en la caja de texto a la variable A. Private Sub txtValA_Change() A = Val(frmEjemplo2.txtValA.Value) End Sub

El control de caja de texto txtValB se asocia a un evento Change para crear un procedimiento que


asigne el valor introducido en la caja de texto a la variable B. Private Sub txtValB_Change() B = Val(frmEjemplo2.txtValB.Value) End Sub

El control de comando cmdMultiplicar se asocia a un evento Click y se programa para asignar el valor de la multiplicaciĂłn de las variables A y B a la variable C, y luego asigna este valor a el control caja de texto de nombre txtValC. Private Sub cmdMultiplicar_Click() C=A*B frmEjemplo2.txtValC.Value = C End Sub

El control de comando cmdBorrar se asocia a un evento Click y se programa para inicializar los valores de las cajas de texto a una cadena de texto vacĂ­a y establecer el foco en la caja de texto txtValA utilizando la propiedad SetFocus. Private Sub cmdBorrar_Click()


frmEjemplo2.txtValA.Text = " " frmEjemplo2.txtValB.Text = " " frmEjemplo2.txtValC.Text = " " frmEjemplo2.txtValA.SetFocus End Sub

Evaluando el Formulario Luego del diseño, elaboración y programación se debe ejecutar el formulario para evaluar si ejecuta las acciones para la cual fue diseñado. Para ejecutar el formulario, se puede ejecutar utilizando la tecla F5 desde el editor de Visual Basic, o utilizando el icono de ejecutar en la barra de menú, o en la pestaña ejecutar.


Esta no es la mejor forma de iniciar la ejecución del formulario, porque cada vez que se desee ejecutar hay que abrir el editor de Visual Basic, seleccionar el formulario y ejecutar. Una mejor forma es crear un procedimiento en un módulo normal y asociarlo a un botón colocado en una hoja. El procedimiento es muy simple. Utiliza el método Show del objeto UserFormName para mostrar el formulario en pantalla. Public Sub MostrarForma() frmEjemplo2.Show End Sub

Luego en una hoja de Excel insertamos un botón y lo asociamos a el procedimiento recién creado. En la hoja de Excel, en la pestaña Desarrollador hacer clic en la flecha que despliega el menú del icono Insertar.


Aparecerán dos grupos de controles: Controles de formulario y Controles ActiveX.

Seleccionar el icono de botón del grupo Control de formulario. Aparecerá un cursor en forma de cruz, anclarlo en un punto de la hoja haciendo clic sobre el botón del ratón, mantener presionado y arrastrar para dibujar una caja. Al soltar se creará un botón y aparecerá una caja de dialogo para asociar el botón a un procedimiento.


Seleccionar el procedimiento y aceptar y el botón quedara asociado al procedimiento. El texto que aparece en el botón por defecto es Botón1. Cambiar la etiqueta del botón y colocar: Mostrar Forma. Una forma de hacerlo es haciendo clic en el botón derecho sobre el botón. Aparecerá un menú desplegable con la opción de Editar texto.


Al hacer clic sobre el botón creado se llamará al procedimiento MostrarForma, y se ejecutará, con lo cual la forma se mostrará en pantalla. Para utilizar el formulario, se introducen valores en las cajas de textos identificados con Valor A y Valor B y al presionar el botón Multiplicar se mostrará el resultado en la caja de texto con la etiqueta Resultado.


Para cerrar la forma se puede hacer clic en la X ubicada en la parte derecha de la barra de título. Otra forma es creando un botón, al cual le podríamos dar nombre cmdCerrar, y programarlo para un evento Click con la siguiente declaración: frmEjemplo2.Hide Private Sub cmdCerrar_Click() frmEjemplo2.Hide End Sub

Este es un ejemplo muy sencillo, pero que da una idea del flujo de trabajo que hay que utilizar para la creación y programación de los formularios.


Transferencia de Información entre el Formulario y la Hoja de Excel El formulario constituye una de las formas que se pueden utilizar para entrada de datos y salida de resultados, utilizando como vía de enlace VBA.

Los datos que son ingresados en el formulario, utilizando cualquiera de los controles pueden ser leidos y/o almacenados en variables, utilizando declaraciones de lectura en VBA. Una vez que la información está en VBA puede ser transferida a la hoja de Excel utilizando declaraciones de escritura. Igualmente, el proceso inverso también es posible leer datos de Excel utilizando declaraciones de VBA y escribirlos en el formulario. En este sentido VBA actúa como un puente de intercambio de información permitiendo leer y escribir datos y resultados bien sea en el formulario o en la hoja de Excel.


Declaraciones de Lectura Utilizando VBA podemos leer un valor de la hoja de Excel o de un control del formulario. Lectura de la Hoja Para asignar el valor de una celda a una variable: Variable = Referencia a la celda de la hoja Ejemplo MiVariable = Worksheets("Hoja1").Range("A1") Donde MiVariable es el nombre de una variable.


Lectura del Formulario Para asignar el valor de un control de un formulario a una variable: Variable = UserFormName.ControlName.Text Variable = UserFormName.ControlName.Value Ejemplo VarA = frmEjemplo2.txtValA.Value Donde VarA es el nombre de una variable. frmEjemplo2 es el nombre de un formulario, el cual utiliza la convenciรณn del prefijo frm. txtValA es el nombre de un control del tipo caja de texto, que utiliza el prefijo txt. Value es la propiedad de la caja de texto que almacena el valor del control caja de texto. Declaraciones de Escritura Si queremos enviar un valor, ya sea a la hoja o a un formulario podemos utilizar declaraciones de escritura para ese fin.


Escribiendo a la Hoja Para asignar el valor de una variable o una expresión a un rango de una hoja. Referencia a Rango de la Hoja = Variable Referencia a Rango de la Hoja = Expresión Ejemplos Worksheets("Hoja1").Range("C5").Value = Area Donde Area es el nombre de una variable. Con esta declaración se está escribiendo en la celda C5 de la hoja 1 el valor de la variable Area. Range("C6") = PI*r^2 * h Donde PI*r^2 * h es una expresión. Con esta declaración se está colocando en la celda C6 el valor que se tiene de evaluar la expresión. Escribiendo a un Control de un Formulario El formulario además de servir para la entrada de datos también sirve para la salida de resultados.


Las declaraciones de escritura tienen la siguiente forma: UserFormName.ControlName.Value = Expresión UserFormName.ControlName.Text = Expresión Se puede utilizar una etiqueta para devolver un valor al formulario: UserFormName.LabelControlName.Caption = Expresión

También se puede utilizar un control de Lista, utilizando el método AddItem. UserFormName.ListBoxName.AddItem Expresion Transferencia Directo entre Formulario y Hoja También es posible una transferencia directa entre el valor de los controles del formulario y celdas de la hoja. Referencia del Rango = UserFormName.ControlName.Text Referencia del Rango = UserFormName.ControlName.Value

Ejemplo: Worksheets("Hoja1").Range("A1") = Me.txtA.Value


Coloca el valor del control Caja de texto de nombre txtA del formulario activo (Me) en la celda A1 de la Hoja1 del libro activo. Propiedades ControlSource y RowSource Estas propiedades aplican a algunos controles, y permiten un intercambio directo de informaciรณn entre un control y un rango en la hoja. ControlSource aplica a un solo valor y lo liga a una sola celda. RowSource aplica a un rango de celdas y se aplica a controles del tipo Lista y Caja Combinada.


Utilizando un Formulario para Llenar una Tabla de Datos en una Hoja Para aplicar lo aprendido en el capítulo anterior vamos a crear una tabla de datos en una hoja y llenarla utilizando un formulario. Vamos a crear 4 campos solamente para mostrar el procedimiento. Nombre, Apellido, País, Estado Civil. En el formulario Nombre y Apellido serán introducidos en cajas de texto; País se introducirá con una caja combinada y para el estado civil se utilizarán 3 botones de opción: Soltero, Casado, y Viudo. Preparando la Hoja En la Hoja1 se crea una tabla, con los encabezados de las columnas en la fila 5. Para llenar la tabla se seleccionará la celda A6, y se insertará una nueva fila, la información se colocará siempre en esta fila insertada, que siempre será la fila 6, de esta


manera la información nueva siempre estará en la parte superior de la tabla. Se colocan los encabezados de la tabla como se muestra en la siguiente figura.

Diseño del Formulario En cuanto al formulario el diseño es el que se muestra a continuación. Incluye 2 cajas de texto, 1 caja combinada, 3 etiquetas, 1 marco, 3 botones de opción y 2 botones de comando:


Tipo de Control Caja de Texto Caja de Texto Caja de Combinada Etiqueta Etiqueta Etiqueta Marco Botón de opción Botón de opción Botón de opción Botón de Comando Botón de Comando

Name

Caption

txtNombre txtApellido cboPaises Label1 Label2 Label3 fraCivil optSoltero

Nombre Apellido País Estado Civil Soltero

optCasado

Casado

optViudo

Viudo

cmdIngresarDatos Ingresar cmdCerrar

Cerrar

En la siguiente figura se muestra el formulario.


Programando el Formulario y sus Controles En la programación se utilizan tres procedimientos: Inicialización del formulario, botón de ingresar datos y botón de cerrar el formulario. Adicionalmente se crea un procedimiento en un módulo normal para mostrar el formulario, y se asocia a un botón en la hoja.


Procedimiento asociado al evento de inicialización El nombre del procedimiento es UserForm_Initialize() Private Sub UserForm_Initialize() Me.txtNombre.Text = " " Me.txtApellido.Text = " " Me.cboPaises.RowSource = "Paises" Me.optSoltero.Value = True Me.optCasado.Value = False Me.optViudo.Value = False Me.txtNombre.SetFocus End Sub

En este procedimiento lo que se está haciendo es colocar en las cajas de texto y la caja combinada una cadena de texto vacía y colocar como opción predeterminada del Estado Civil, Soltero. Finalmente se coloca el cursor en la caja de texto correspondiente al nombre utilizando la propiedad SetFocus.


Procedimiento Asociado al Botรณn Ingresar Este botรณn tiene nombre cmdIngresarDatos y se ha programado para el evento Click() Private Sub cmdIngresarDatos_Click() Dim Civil As String If Me.optSoltero Then Civil = "Soltero" ElseIf Me.optCasado Then Civil = "Casado" Else Civil = "Viudo" End If Worksheets("Hoja1").Range("A6").EntireRow.Insert Range("A6").Select ActiveCell = Me.txtNombre.Value ActiveCell.Offset(0, 1) = Me.txtApellido.Value ActiveCell.Offset(0, 2) = Me.cboPaises.Value ActiveCell.Offset(0, 3) = Civil


Me.txtNombre.Text = " " Me.txtApellido.Text = " " Me.cboPaises.Text = "" Me.optSoltero.Value = True Me.optCasado.Value = False Me.optViudo.Value = False Me.txtNombre.SetFocus End Sub

En este procedimiento se utiliza una estructura IF Then ElseIf Else End If, para asignar el valor a la variable Civil una cadena de texto dependiendo del estado de los botones de opción. Luego se inserta una fila en la Fila 6. Se selecciona la celda A6 y a partir de allí se van colocando todos los valores ingresados en el formulario, moviéndose en la fila 6, utilizando la propiedad Offset para ir moviendo columna a columna y copiando en la celda el valor de las cajas de texto, caja combinada y de la variable Civil, que indica cual opción esta seleccionada.


Al terminar de copiar la información borra el contenido de las cajas de texto, caja combinada y coloca el botón de option optSoltero con valor True y coloca el cursor en la caja de texto del nombre, lista para ingresar otro registro de datos. Procedimiento Asociado al Botón Cerrar Este botón tiene nombre cmdCerrar y se ha programado para el evento Click() Private Sub cmdCerrar_Click() Me.Hide End Sub

Este es un procedimiento muy sencillo y solo consiste en una línea de código. Utiliza el método Hide para ocultar el formulario. Me sustituye a el formulario que está activo. En lugar de Me se puede utilizar el nombre del formulario frmTabla.


Creando un Botรณn en la Hoja Para mostrar el formulario en la hoja creamos un procedimiento muy simple en un mรณdulo normal. Public Sub MostrarForma() frmTabla.Show End Sub

Luego insertamos un botรณn en la Hoja1, y lo asociamos al procedimiento.

Al hacer clic sobre el botรณn "Mostrar Forma" aparecerรก el formulario para ingresar datos.


Comentarios Finales Estos procedimientos mostrados como ejemplo dan una idea de lo que se puede lograr utilizando formularios, son muy sencillos. Las cosas pueden complicarse tanto como se deseen. Se pueden añadir códigos para restringir la entrada de valores, que indiquen al usuario que un dato es requerido. Se pueden diseñar formularios con mayor cantidad de controles, se pueden añadir barras de desplazamiento, botones de número y otros controles de acuerdo a la necesidad del usuario. Pero con la finalidad de que la esencia básica de los formularios pudiera ser captada, sin la necesidad de abrumar al lector con una gran cantidad de controles y propiedades nos hemos limitado a los controles fundamentales.


Acerca del Autor

Luis Brito es un consultor de Ingeniería. Ha tenido interés en VBA para Excel por más de 15 años y ha recopilado durante este tiempo una gran cantidad de notas de diferentes fuentes que han servido para la preparación de este libro. Ha escrito una gran cantidad de artículos sobre el uso de VBA Excel y ha escrito varios libros de la serie VBA Excel.


Otros Libros Publicados por Luis E Brito VBA Excel Guía Esencial

Amazon US https://www.amazon.com/dp/B01M8K5120 Amazon México https://www.amazon.com.mx/dp/B01M8K5120


VBA Excel Modelo de Objetos

Amazon US https://www.amazon.com/dp/B01M674D09 Amazon México https://www.amazon.com.mx/dp/B01M674D09


VBA Excel UserForms

Amazon US https://www.amazon.com/dp/B01N63S43C Amazon México https://www.amazon.com.mx/dp/B01N63S43C


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.