Función MsgBox
Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un número entero que indica en qué botón hizo clic el usuario.
Para crear una ventana emergente utilizamos la palabra reservada MsgBox
Para mostrar el valor de una variable:
Para mostrar el valor de una constante:
Para concatenar un texto con una variable y una constante:
Construir y diseñar en su forma más simple
Sintaxis: MsgBox(Prompt,[Buttons As VbMsgBoxStyle = vbOKOnly],[Title],[HelpFile],[Context]) As VbMsgBoxResult
La estructura básica para mostrar en MsgBox es así:
Los MsgBox tienen tres argumentos fundamentales: Prompt, Buttons y Title
Prompt (Texto a mostrar)
Este argumento es obligatorio configurarlo y representa el texto que mostrará nuestro mensaje. La longitud máxima del mensaje es de aproximadamente 1024 caracteres, dependiendo del ancho de los caracteres utilizados. Si el mensaje consta de más de una línea, puede separar las líneas utilizando un carácter de retorno de carro ( Chr (13) ), un carácter de salto de línea ( Chr (10) ) o una combinación de caracteres de retorno de carro - salto de línea ( Chr (13) y Chr (10) ) entre cada línea.
Title (Título Opcional)
Es el texto que se muestra en la barra de título, si se omite se mostrará el título de la aplicación.
msgbox "Texto en la barra de título," & Chr(13) & "si se omite se mostrará el título de la aplicación." & Chr(13) & "Microsoft Access", vbExclamation
msgbox "Texto en la barra de título," & Chr(13) & "como ejemplo es:" & Chr(13) & "TIRONEMOTA", vbExclamation, "TIRONEMOTA"
Ayuda contextual
- HelpFile (Archivo de ayuda): Opcional. Expresión de cadena que identifica el archivo de ayuda que se utilizará para proporcionar ayuda contextual para el cuadro de diálogo. Si se proporciona un archivo de ayuda, también se debe proporcionar contexto.
- Context (Contexto): Opcional. Expresión numérica que es el número de contexto de Ayuda asignado al tema de Ayuda correspondiente por el autor de la Ayuda. Si se proporciona contexto , también se debe proporcionar el Archivo de ayuda.
Y otro punto muy interesante a favor de este argumento es que, en función de los botones que hayamos elegido mostrar en el mensaje de texto, una vez que nuestro usuario pulse uno de ellos, la aplicación devolverá un valor que podremos capturar y actuar en consecuencia. Vamos a verlos:
| Constante | Valor | Descripción |
| vbOK | 1 | Aceptar |
| vbCancel | 2 | Cancelar |
| vbAbort | 3 | Anular |
| vbRetry | 4 | Reintentar |
| vbIgnore | 5 | Ignorar |
| vbYes | 6 | Si |
| vbNo | 7 | No |
El valor de la izquierda es el que devuelve la aplicación cuando pulsemos el botón de la derecha.
Añadiéndo interacción con el usuario
Por ejemplo, tenemos un botón para enviarle un email, no vamos a entrar aquí en como se envía el email, pero intentando informar al usuario de lo que estamos haciendo nos vamos a cerciorar de que es eso lo que realmente quiere hacer así que le mostraremos un MsgBox preguntando "¿Realmente quiere enviar el email?". En este caso el MsgBox tendrá dos botones "Sí" o "No" y en función de lo que pulse el usuario enviaremos el email o simplemente cerraremos el mensaje sin hacer nada.
Combinado tres opciones:
- vbYesNo: Mostraremos dos botones "Sí" y "No"
- vbQuestion: El icono será el de interrogación
- vbDefaultButton1: de los dos botones, el primero de ellos "Sí" será el que esté seleccionado por defecto al abrir el MsgBox. Esto permitirá, con solo pulsar intro, aceptar el mensaje.
La toma de decisiones la vamos a realizar a través de un SELECT CASE al que le vamos a pasar el botón que hemos pulsado en nuestro MsgBox. Esto quiere decir que, al llamar al MsgBox dentro de un SELECT CASE, en cuanto pulsemos "Sí" (vbYes) o "No" (vbNo) y se cierre el MsgBox, nuestro SELECT CASE tomará el valor del botón pulsado.
Private Sub btnEmail_Click()
'Llamamos el MsgBox directamente desde el SELECT CASE
Select Case MsgBox("¿Realmente quiere enviar el email?", vbYesNo Or vbQuestion Or vbDefaultButton1, "Tironemota")
Case vbYes
'Que hacer si se pulsa Yes
MsgBox "Email enviado"
Case vbNo
'Que hacer si se pulsa No
MsgBox "No enviado"
End Select
End Sub
Otro ejemplo, supongamos que estamos mandando el email y a mitad del proceso tenemos un error y no se puede enviar, podríamos informar al usuario con un MsgBox de que ha ocurrido un error y darle la opción de Anular todo el proceso, Reintentar enviarlo de nuevo o Ignorar el error y seguir la ejecución del programa:
Private Sub btnEmail_Click()
'Llamamos el MsgBox directamente desde el SELECT CASE
Select Case MsgBox("A ocurrido un error durante el envio del email." & vbCrLf & "¿Qué desea hacer?", vbAbortRetryIgnore Or vbExclamation Or vbDefaultButton1, "Tironemota")
Case vbAbort
'Que hacer si se pulsa Anular
MsgBox "Anular"
Case vbRetry
'Que hacer si se pulsa Reintentar
MsgBox "Reintentar"
Case vbIgnore
'Que hacer si se pulsa Ignorar
MsgBox "Ignorar"
End Select
End Sub
Como se puede observar hemos cambiado el icono del MsgBox para que sea más representativo de que ha ocurrido un error y hemos añadido un tercer botón, también hemos insertado un salto de línea para hacerlo más legible lo que hemos hecho con & vbCrLf &.
En este caso, según el botón que pulsemos, el MsgBox devolverá: