funciónes propias de visual basic
DESCRIPTION
MSGBOX E INPUTBOXTRANSCRIPT
-
FUNCIN MSGBOX
La funcin MsgBox en VBA nos permite mostrar un mensaje dentro de un cuadro de dilogo en espera de que el usuario haga clic sobre alguno de los botones provistos. Si lo deseamos podemos tomar alguna accin especfica despus de conocer el botn pulsado por el usuario.
Argumentos de la funcin MsgBox
La funcin MsgBox en VBA tiene 5 argumentos, los cuales explicar a continuacin:
Prompt (obligatorio): Es la cadena de texto que se mostrar como el mensaje dentro del cuadro de dilogo. La longitud mxima es de 1024 caracteres, pero depende del tipo de fuente utilizada.
Buttons (opcional): Expresin numrica que proviene de la suma de ciertas constantes que representan el tipo de botn e iconos a desplegar.
Title (opcional): Cadena de texto que se mostrar como el ttulo del cuadro de dilogo. Si se omite, el ttulo ser el nombre de la aplicacin.
HelpFile (opcional): Cadena de texto con la ubicacin del archivo de ayuda asociado al cuadro de dilogo. Si se especifica este argumento, debe indicarse tambin Context.
Para dejar en claro el uso de cada uno de los argumentos de la funcin haremos varios ejemplos y para cada uno de ellos crear un botn de comando ActiveX e insertar el cdigo correspondiente en su evento Click. Al final del artculo encontrars el vnculo para descargar el libro de trabajo.
Ejemplo 1: La funcin MsgBox en VBA
Ya que solamente el primer argumento de la funcin MsgBox es obligatorio, podemos crear un mensaje informativo para el usuario con la siguiente lnea de cdigo:
1 2 3
Private Sub CommandButton1_Click() MsgBox "Hola Mundo" End Sub
Al ejecutar este cdigo se mostrar un cuadro de dilogo como el siguiente:
-
Al no haber especificado ningn valor para el segundo argumento, se muestra solamente el botn Aceptar. Y ya que tampoco hay un tercer argumento, el cuadro de dilogo tendr el ttulo Microsoft Excel que es el nombre de la aplicacin.
Ejemplo 2: El argumento Title
Antes de revisar el segundo argumento de la funcin MsgBox, hablaremos sobre su tercer argumento que es el ttulo del cuadro de dilogo. Para poner un ttulo personalizado ser suficiente indicarlo de la siguiente manera:
1 2 3
Private Sub CommandButton2_Click() MsgBox "Hola Mundo", , "Mensaje especial" End Sub
Esta instruccin mostrar el ttulo del cuadro de dilogo como Mensaje especial y ya no se mostrar el nombre de la aplicacin. Observa el resultado:
Ejemplo 3: El argumento Buttons
Hasta ahora solo has visto el botn Aceptar en el cuadro de dilogo, pero el segundo argumento de la funcin MsgBox nos permitir indicar los botones que deseamos mostrar y tambin podremos elegir el icono desplegado y el comportamiento del cuadro de dilogo. La siguiente tabla indica los valores que podemos utilizar para este argumento:
-
Todos estos valores los podemos dividir en cinco grupos. El primer grupo (0, 1, 2, 3, 4, 5) nos permite indicar los botones que se mostrarn en el cuadro de dilogo, el segundo grupo (16, 32, 48, 64) determinar el tipo de cono mostrado, el tercer grupo (0, 256, 512, 768) es til para indicar el botn predeterminado. El cuarto grupo (0, 4096) es la modalidad del cuadro de dilogo y el ltimo grupo, que son los valores restantes, nos permiten indicar la alineacin del texto y si deseamos mostrar un botn de Ayuda.
Ya que los valores de cada grupo son excluyentes, solo hace sentido elegir un valor de cada uno de ellos. De esta manera, si deseo mostrar los botones Si y No, y adems mostrar un icono de mensaje de advertencia, entonces debo utilizar la siguiente instruccin:
1 2 3
Private Sub CommandButton3_Click() MsgBox "Hola Mundo", vbYesNo + vbExclamation, "Mensaje especial" End Sub
-
Para el segundo argumento puedes utilizar las constantes definidas para cada opcin o utilizar directamente el valor numrico correspondiente de acuerdo a la tabla. El resultado de esta instruccin ser el siguiente:
Para cada opcin adicional que desees indicar debers agregarla utilizando el smbolo de suma (+). Recuerda que este argumento este argumento de la funcin MsgBox es de valor numrico, as que Excel obtendr la suma total para conocer las opciones indicadas.
Ejemplo 4: Conocer el botn pulsado
Para conocer el botn que ha sido pulsado por el usuario, es necesario guardar el valor devuelto por la funcin MsgBox en una variable:
resultado = MsgBox("Hola Mundo", vbAbortRetryIgnore + vbQuestion, "Mensaje
especial")
Antes de continuar debo mencionar algo importante sobre esta instruccin ya que, a diferencia de las anteriores, en esta ocasin los argumentos de la funcin MsgBox estn encerrados en parntesis. Esto se debe a una regla de programacin en VBA la cual indica que cuando se llama a una funcin que devolver un valor el cual ser asignado a una variable, su lista de argumentos deber estar rodeada por parntesis. As que no podemos olvidar colocar los parntesis si queremos conocer el botn pulsado por el usuario.
Ahora bien, la variable resultado guardar el valor devuelto por la funcin MsgBox el cual puede ser cualquiera de las siguientes opciones dependiendo los botones que hayamos decidido mostrar:
-
Una vez que el usuario hace clic sobre un botn, la funcin MsgBox nos devuelve el valor correspondiente y podremos comparar dicho valor con las contantes mencionadas en la tabla anterior. Para nuestro ejemplo, utilizar una sentencia Select Case para comparar la variable resultado con todas las opciones posibles:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Private Sub CommandButton4_Click() resultado = MsgBox("Hola Mundo", vbAbortRetryIgnore + vbQuestion, "Mensaje especial") Select Case resultado Case vbOK: MsgBox "Se puls el botn Aceptar" Case vbCancel: MsgBox "Se puls el botn Cancelar" Case vbAbort: MsgBox "Se puls el botn Anular" Case vbRetry: MsgBox "Se puls el botn Reintentar" Case vbIgnore: MsgBox "Se puls el botn Omitir" Case vbYes: MsgBox "Se puls el botn Si" Case vbNo: MsgBox "Se puls el botn No" End Select End Sub
Una vez identificado el botn sobre el cual el usuario ha hecho clic, mostraremos otro mensaje con el nombre de dicho botn. En un caso real, esa lnea de cdigo sera reemplazada por las instrucciones que se deseas ejecutar de acuerdo a la respuesta del usuario.
En nuestro ejemplo mostramos un cuadro de dilogo con los botones Anular, Reintentar y Omitir, as que si el usuario hace clic sobre el botn Reintentar se mostrar el mensaje que nos confirmar dicha accin:
-
Con los ejemplos realizados hasta el momento hemos cubierto la gran mayora de opciones de uso de lafuncin MsgBox en VBA. La verdad es que los ltimos dos argumentos de la funcin son muy poco utilizados pero haremos un ltimo ejemplo para mostrar su uso.
Otros Ejercicios Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn y devuelve un entero que indica el botn utilizado. Ejercicio 1 1.- Crear un formulario con un botn de comando como se muestra en la figura
2.- Incluir el el command1 el siguiente codigo en el evento click msgbox "Actualizacin terminada", vbokonly, "Informacin" 3.- Ejecutar la aplicacin Ejercicio 2 Reemplaza el cdigo del botn de comando anterior en el evento click e ingresa el
-
siguiente cdigo msgbox "Quieres seguir?", vbYesNo, "Informacin importante" Ejercicio 3 Reemplaza el cdigo del botn de comando anterior en el evento click e ingresa el siguiente cdigo Dim intRespuesta As Integer intRespuesta = MsgBox("Quieres seguir?", vbQuestion + vbYesNo, Informacin importante") If intRespuesta = 6 Then MsgBox"Seguimos" Else MsgBox"Terminamos" End If Ejercicio 4 Reemplaza el cdigo del botn de comando anterior en el evento click e ingresa el siguiente cdigo msgbox "Actualizacin terminada:" & vbCrLf & vbCrLf & _ "- Importacin de datos de venta." & vbCrLf & "- Clculos de impuestos." & _ vbCrLf & "- Venta por proveedor." & vbCrLf , vbOKOnly, "Actualizacin terminada." Ejercicio 5 Reemplaza el cdigo del botn de comando anterior en el evento click e ingresa el siguiente cdigo msgbox "Actualizacin terminada:" & vbCrLf & vbCrLf & _ "- Importacin de datos de venta." & vbCrLf & _ "- Clculos de impuestos." & vbCrLf & _ "- Venta por proveedor." & vbCrLf _ , vbExclamation + vbOKOnly, _ "Actualizacin terminada." INPUTBOX Esta funcin muestra un cuadro de dilogo modal (ste es un trmino tcnico para definir un formulario que ha de cerrarse antes de poder continuar con el desarrollo
-
normal del programa), que contiene un Ttulo y un Mensaje (definibles), un cuadro de texto y dos botones "ACEPTAR" y "CANCELAR". Ejercicio 1 Reemplaza el cdigo del botn de comando anterior en el evento click e ingresa el siguiente cdigo Dim Val As String Val = InputBox("Cual es tu nombre", "Ejemplo 1.- INPUTBOX") MsgBox "Su nombre es: " & Val Ejercicio 2 Reemplaza el cdigo del botn de comando anterior en el evento click e ingresa el siguiente cdigo Dim Val As String Val = InputBox("Digita tu numero de cuenta", "Ejemplo 2.- INPUTBOX","ABC-123") Ejercicio 3 Reemplaza el cdigo del botn de comando anterior en el evento click e ingresa el siguiente cdigo Dim A As Double 'Nmeros con muchos decimales A = InputBox("Ingresa el precio del cual quieres obtener el IVA") A = A * 0.15 'Obtenemos el IVA MsgBox "El iva es: " & A
FUNCION INPUTBOX (Cajas de Entrada).
Las cajas de entrada permiten el ingreso de un valor o de un texto y devuelven una cadena con el texto ingresado. La sintaxis de esta funcin es:
InputBox(texto, predeterminado, ttulo)
Donde texto es el texto descriptivo que aparecer en la caja de entrada, predeterminado es el valor predeterminado que aparecer en la caja de texto de la caja de entrada, ttulo es el texto que aparecer en la barra de ttulo de la caja de entrada.
Ejemplo
-
Crea un nuevo proyecto estndar y coloca en el formulario los siguientes controles:
Control Propiedad Valor
Form Name frmCajas
" " Caption Caja de mensajes y de entrada
Label Name lblTexto
" " Caption
Label Name lblProd
" " Caption 0
CommandButton Name cmdTexto
" " Caption &Escribir
CommandButton Name cmdProd
" " Caption &Multiplicar
Escribe el siguiente cdigo en el formulario:
Private Sub Form_Load() MsgBox "Prueba de Caja de Mensajes"& vbCrLf &"y Caja de Entrada" End Sub
Private Sub cmdTexto_Click() lblTexto.Caption=InputBox("Introduzca un texto","introducir","Cuadro de entrada") End Sub
Private Sub cmdProd_Click() Dim numer as String numer=InputBox("Introduzca un nmero",0,"Multiplicar por 2") lblProd.Caption=2*Cint(numer) End Sub