En esta ocasión haremos un ejemplo básico de cómo utilizar un formulario VBA para desarrollar una mini-aplicación en Excel que realice la conversión de temperaturas entre grados Celsius y grados Fahrenheit. Este ejemplo será de gran ayuda para aquellos que comienzan en la programación VBA.
Creación del formulario
Es probable que hayas iniciado a programar en VBA pero aún no hayas utilizado los formularios, así que será conveniente dar una breve definición antes de comenzar. Un formulario VBA es un cuadro de diálogo donde agregamos diversos tipos de controles como botones de comando, cajas de texto, casillas de verificación, y otros controles más que serán de utilidad para obtener información de un usuario ya sea para procesarla y devolver algún resultado o simplemente almacenarla.
Los formularios nos permiten crear aplicaciones en Excel para extender el uso y funcionalidad de la herramienta y aunque su uso está fuertemente relacionado con los usuarios avanzados de Excel, pronto verás que no es tan complicado utilizarlos. Para iniciar nuestro ejemplo agregaremos un nuevo formulario de la siguiente manera. En la ficha Programador pulsa el botón Visual Basic y se mostrará el Editor de VBA. Haz clic derecho sobre VBA Project y selecciona la opción Insertar > UserForm:
De inmediato el panel principal mostrará el formulario recién creado así como un pequeño cuadro de diálogo con el título Cuadro de herramientas el cual contiene los controles que podemos agregar al formulario.
El Cuadro de herramientas tiene un botón para cada tipo de control como etiqueta, cuadro de texto, cuadro combinado, cuadro de lista, casilla de verificación, botón de opción, etc. Para agregar un control al formulario es necesario hacer clic en el botón correspondiente dentro del Cuadro de herramientas y posteriormente hacer clic dentro del formulario. Otra manera de agregar un control al formulario es pulsar el botón del control y arrastrarlo sobre el formulario.
Agregar controles de formulario
Para nuestro ejemplo necesitamos agregar una etiqueta, un cuadro de texto, un cuadro de lista y un botón de comando de manera que nuestro formulario quede de la siguiente manera:
Para cambiar el texto de la etiqueta y del botón de comando debemos modificar la propiedad llamada Caption y eso lo haremos desde la ventana Propiedades. Si esta ventana no se muestra actualmente en el Editor de Visual Basic puedes seleccionarla desde el menú Ver o también puedes hacer clic derecho sobre alguno de los controles y seleccionar la opción Propiedades lo cual mostrará la ventana:
Encuentra la propiedad Caption y al lado derecho ingresa el valor de dicha propiedad para el control seleccionado. En la imagen anterior estamos viendo las propiedades de la etiqueta llamada Label1 y por lo tanto he colocado el texto Temperatura. Para hacer el cambio de esta propiedad para el botón de comando solo debes seleccionarlo de la lista desplegable que se encuentra en la parte superior de la misma ventana Propiedades. Al terminar el cambio de la propiedad Caption tendremos el formulario de la siguiente manera:
En la imagen anterior puedes notar que también he cambiado en el título del formulario y lo puedes hacer modificando también la propiedad Caption del formulario mismo.
Agregar opciones al cuadro de lista
Un último cambio que haremos a los controles es agregar los valores al cuadro de lista. Para nuestro ejemplo solo necesitamos los valores Celsius y Fahrenheit pero no existe una propiedad del control que nos permita hacerlo sino que debemos utilizar código VBA. Para especificar estas opciones debemos hacer doble clic sobre el formulario y seleccionar el código para el procedimiento Initialize donde colocaremos las instrucciones necesarias para agregar las opciones:
La instrucción AddItem es la que nos permite agregar un nuevo elemento al cuadro de lista y la instrucción ListIndex nos permite indicar el valor que estará seleccionado al cargarse el formulario y que será la opción Celsius ya que es la primera opción de la lista y por lo tanto tiene asociado el índice cero.
Código del botón de comando
Finalmente agregaremos código VBA al botón de comando que será el encargado de hacer la conversión, solo haz doble clic sobre el botón para mostrar la ventana de código asociada. El código que colocaremos en el procedimiento Click será el siguiente:
Private Sub CommandButton1_Click() 'Validar que se ha especificado una temperatura If TextBox1.Value = "" Then MsgBox "Debes especificar una temperatura" Exit Sub End If 'Si es Celsius convertir a Fahrenheit If ComboBox1.ListIndex = 0 Then temperatura = TextBox1.Value * 1.8 + 32 MsgBox temperatura & " Fahrenheit" 'Si es Fahrenheit convertir a Celsius Else temperatura = (TextBox1.Value - 32) * 5 / 9 MsgBox temperatura & " Celsius" End If End Sub
La primera validación dentro del código verifica que el cuadro de texto no esté vacío en cuyo caso desplegará un mensaje solicitando ingresar una temperatura y posteriormente sale de la subrutina. La segunda validación es para saber si el cuadro de lista tiene seleccionada la opción Celsius y por lo tanto hacer la conversión a Fahrenheit para mostrar el resultado. Por el contrario, si el cuadro de lista tiene seleccionada la opción Fahrenheit se hará la conversión a Celsius. Para probar el funcionamiento de nuestro formulario es suficiente con pulsar el botón Ejecutar que se encuentra en la barra de herramientas Estándar:
Observa el comportamiento final del formulario:
Ya que hemos terminado con la construcción del formulario y el código necesario para su funcionamiento, podemos dar un paso adicional para llamar el formulario desde una hoja de Excel.
Cargar formulario desde una hoja de Excel
Para cargar un formulario desde una hoja de Excel será suficiente con agregar un botón de comando ActiveX desde la ficha Programador:
Al hacer doble clic sobre el botón se mostrará el código asociado al evento Click del botón y debemos colocar una sola instrucción:
Con esto será suficiente para que al momento de pulsar el botón de la hoja de Excel se muestre el formulario VBA recién creado y podamos realizar la conversión de temperaturas. Aunque este es un ejemplo muy sencillo espero que sea útil para darte cuenta del gran potencial que existe en el uso de formularios en Excel.
Para probar por tu propia cuenta el ejercicio recién desarrollado descarga el libro de trabajo que contiene toda la solución.
Artículos relacionados
Introducción a las macros