DESARROLLO DE APLICACIONES EN MICROSOFT® EXCEL
Juan Carlos Vergara Schmalbach y Víctor Manuel Quesada Ibargüen
Esta página muestra parte del texto pero sin formato.
Puede bajarse el libro completo en PDF comprimido ZIP (162 páginas, 1.85 Mb) pulsando aquí
Objetivo: Desarrollar un ejercicio básico que muestre los enlaces entre las ventanas (o formularios) diseñados en Visual Basic for Application (VBA) y Microsoft® Excel.
Primer paso: Diseño del formulario
En este ejemplo se diseñará un formulario sencillo para demostrar el uso de los controles y su enlace con una hoja de cálculo. Para ello cree un USERFORM en VBA e inserte los siguientes controles:
3 ETIQUETAS
1 CUADRO DE TEXTO
1 CUADRO COMBINADO
1 CASILLA DE VERIFICACIÓN
2 BOTONES DE OPCIÓN
1 IMAGEN
1 BOTÓN DE COMANDO
Pulse sobre el USERFORM1 y cambie el texto del título de la ventana a “INTERFAZ DE PRUEBA” modificando la propiedad CAPTION. Cambie el color de fondo a un azul claro mediante la propiedad BACKCOLOR.
Cambie la propiedad CAPTION de las etiquetas LABEL1, 2 y 3 a “NOMBRE”, “CIUDAD ORIGEN” y “DESTINO”, respectivamente. Modifique el color de las etiquetas al mismo color de fondo de la ventana con la propiedad BACKCOLOR. Active la opción NEGRITA de la propiedad FONT.
Limite el número de caracteres del CUADRO DE TEXTO a 20 con la propiedad MAXLENGTH. Para los BOTONES DE OPCIÓN (OPTIONBUTTON 1 y 2) cambie el valor de la propiedad CAPTION a “NACIONAL” e “INTERNACIONAL”. Cambie el color de los dos controles a azul claro.
En el control IMAGEN seleccione una figura que represente un avión o un viaje, empleando la propiedad PICTURE. Seleccione la opción 1 (FMPICTURESIZEMODESTRETCH) de la propiedad PICTURESIZEMODE. Para finalizar el diseño de la ventana, modifique también la propiedad CAPTION de la CASILLA DE VERIFICACIÓN y el BOTÓN DE COMANDO a “VIAJE DE TURISMO” y “ACEPTAR”, respectivamente. Cambie el color de la CASILLA DE VERIFICACIÓN a azul claro.
Segundo paso: Programación del CUADRO COMBINADO (COMBOBOX)
El COMBOBOX1 que se encuentra en la ventana deberá ser programado. En este caso se desea mostrar un listado corto de ciudades (Cartagena, Barranquilla y Santa Marta).
Para realizar este paso haga doble click en el formulario y en la ventana de código seleccione el evento ACTIVATE. Escriba el siguiente código (en color rojo):
Private Sub UserForm_Activate()
ComboBox1.Clear
ComboBox1.AddItem ("CARTAGENA")
ComboBox1.AddItem ("BARRANQUILLA")
ComboBox1.AddItem ("SANTA MARTA")
End Sub
El código borra primero el contenido del COMBOBOX1 y luego agregue las tres opciones disponibles (esto ocurre cuando se activa la ventana).
Tercer paso: Activar el formulario desde la hoja de cálculo
Desde la hoja de MS® Excel agregué un BOTÓN DE COMANDO tipo CONTROL ACTIVEX con el texto FORMULARIO en la propiedad CAPTION, como se puede observar en la siguiente ilustración (ajuste la propiedad FONT para resaltar el texto del botón).
Haga doble click en el botón y agregue el siguiente código:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Pruebe el botón, desactivando antes el botón MODO DISEÑO de la ficha PROGRAMADOR y verifique que el COMBOBOX1 muestre las opciones programadas en el paso anterior.
Cuarto paso: Traslado de los datos del formulario a la hoja de cálculo
Antes de programar el traslado de datos entre el formulario y la hoja de cálculo, cree la siguiente tabla en la hoja donde se encuentra el BOTÓN DE COMANDO.
Regrese nuevamente al formulario en Visual Basic y haga doble click en el botón ACEPTAR. Ingrese el siguiente código.
Private Sub CommandButton2_Click()
Cells(9, 6).Value = TextBox1.Text
Cells(9, 11).Value = ComboBox1.Text
If OptionButton1.Value = True Then
Cells(10, 6).Value = "NACIONAL"
Else
Cells(10, 6).Value = "INTERNACIONAL"
End If
If CheckBox1.Value = True Then
Cells(10, 11).Value = "SI"
Else
Cells(10, 11).Value = "NO"
End If
UserForm1.Hide
End Sub
A continuación se explicará el código anterior en detalle.
Cells(9, 6).Value = TextBox1.Text
Permite trasladar el texto contenido en el TEXTBOX1 a la celda correspondiente a la fila 9 y columna número 6 (F9).
Cells(9, 11).Value = ComboBox1.Text
Igual que en el caso anterior, se trastada el texto actual del COMBOBOX1 a la celda K9.
If OptionButton1.Value = True Then
Cells(10, 6).Value = "NACIONAL"
Else
Cells(10, 6).Value = "INTERNACIONAL"
End If
Este fragmento de código representa un condicional donde se pregunta si el primer OPTIONBUTTON1 se encuentra seleccionado (VALUE = TRUE). En este caso se mostrará en la celda F10 el texto “NACIONAL” y en caso contrario el texto “INTERNACIONAL”. Observe que el condicional IF THEN ELSE debe finalizar con el comando END IF.
If CheckBox1.Value = True Then
Cells(10, 11).Value = "SI"
Else
Cells(10, 11).Value = "NO"
End If
Nuevamente se emplea el condicional IF THEN ELSE para evaluar si el CHECKBOX1 se encuentra marcado. Si esto ocurre (VALUE = TRUE) se muestra el texto “SI”, en caso contrario se muestra “NO”.
UserForm1.Hide
Esta última línea de código oculta la ventana. Pulse el BOTÓN DE COMANDO de la hoja de cálculo y pruebe el formulario completo.
Quinto paso: Protección de celdas y hojas
Seleccione las celdas en las cuales el usuario ingresará los datos y pulse con el botón derecho del mouse para desplegar la ventana FORMATO DE CELDAS. Una vez desplegada la ventana, diríjase a la ficha PROTEGER y desactive la opción BLOQUEADA. Luego, en el menú REVISAR, pulse sobre el botón PROTEGER HOJA y desmarque la opción SELECCIONAR CELDAS BLOQUEADAS. Desmarque también la opción TÍTULOS que se encuentra en la ficha VISTA.
Realice una prueba final de la aplicación donde ingrese información al libro de Excel a través del formulario.