Sunteți pe pagina 1din 9

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","ABC123")
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

CommandButton Name

cmdTexto

""

&Escribir

Caption

CommandButton Name

cmdProd

""

&Multiplicar

Caption

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

S-ar putea să vă placă și