Curso Excel VBA y Macros – Cap. 20 – Función MsgBox para mostrar mensajes combinada con IF
En el lenguaje VBA y prácticamente en cualquier lenguaje de programación es necesario dominar una función que nos permite tanto mostrar mensajes informativos como mensajes donde se nos de la opción de continuar con la ejecución de algún procedimiento o realizar otra acción.
En VBA existe la función MsgBox que puede ser usada sólo para mostrar un mensaje como para usarle en conjunto con una variable y pasarle a la variable el valor del botón que fue presionado.
Lo interesante de MsgBox es que podemos combinarla con la instrucción IF para tomar acciones dependiendo el botón seleccionado, ya que el valor del botón seleccionado lo podemos guardar en una variable y posteriormente usarlo con IF.
Ver video Capítulo 20 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Sintaxis
A continuación, la sintaxis de la función MsgBox en VBA:
MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])
Donde:
-
Prompt o mensaje: Es el mensaje que se mostrará en el mensaje. El máximo de caracteres es aproximadamente 1024. Puedes mostrar un mensaje con varias líneas, y para separar las líneas puedes usar vbNewLine o Chr(13).
-
Buttons o botones: Opcionalmente puedes mostrar más de un botón, si no especificas este parámetro se mostrara el botón Aceptar. También puede mostrar un ícono junto al texto.
-
Tittle o título: Opcionalmente puedes definir un título al mensaje.
-
Help file: Es un archivo de ayuda que proporciona información sobre el cuadro de diálogo.
-
Context: Define el tema que tratará la ayuda del cuadro de diálogo.
Les muestro un ejemplo sencillo para mostrar un mensaje donde incluimos 3 botones (Si, No, Cancelar), además del icono de Información.
MsgBox “Prueba3”, vbInformation + vbYesNoCancel + vbDefaultButton3, “EXCELeINFO”, “ayuda.hlp”, 101
Notemos que cuando deseamos combinar botones con íconos, usamos el signo de más “+”.
Botones e iconos para mostrar en cuadro de mensaje
La siguiente Tabla nos muestra los diferentes botones e iconos que podemos mostrar en un cuadro de mensaje MsgBox.
-
El grupo de 0 a 5 son los tipos de botones.
-
Los valores 16, 32, 48, 64 son los tipos de iconos: crítico, pregunta, exclamación e información.
-
Los valores 0, 256, 512 y 768 son para indicar cuál es el botón predeterminado.
Constante |
Valor |
Descripción |
vbOKOnly |
0 |
Muestra solo el botón Aceptar. |
vbOKCancel |
1 |
Muestra los botones Aceptar y Cancelar |
vbAbortRetryIgnore |
2 |
Muestra los botones Anular, Reintentar e Ignorar. |
vbYesNoCancel |
3 |
Muestra los botones Sí, No y Cancelar. |
vbYesNo |
4 |
Muestra los botones Sí, No. |
vbRetryCancel |
5 |
Muestra los botones Reintentar y Cancelar. |
vbCritical |
16 |
Muestra el icono Mensaje crítico. |
vbQuestion |
32 |
Muestra el icono Consulta de advertencia. |
vbExclamation |
48 |
Muestra el icono Mensaje de advertencia. |
vbInformation |
64 |
Muestra el icono Mensaje de información. |
vbDefaultButton1 |
0 |
El primer botón es el valor predeterminado. |
vbDefaultButton2 |
256 |
El segundo botón es el valor predeterminado. |
vbDefaultButton3 |
512 |
El tercer botón es el valor predeterminado. |
vbDefaultButton4 |
768 |
El cuarto botón es el valor predeterminado. |
Guardar valores del botón seleccionado en una variable
Si mostramos más de un botón en el cuadro de mensaje MsgBox es muy interesante que dependiendo el botón seleccionado podemos ejecutar macros. Aunque podemos tener 6 variables de botones combinados, son 7 los botones que podemos utilizar y cada uno guardará un valor que posteriormente lo podemos usar con la instrucción IF.
Les muestro la tabla de valores devueltos por cada botón.
Constante |
Valor |
Descripción |
vbOK |
1 |
Aceptar |
vbCancel |
2 |
Cancel |
vbAbort |
3 |
Anular |
vbRetry |
4 |
Reintentar |
vbIgnore |
5 |
Ignore |
vbYes |
6 |
Sí |
vbNo |
7 |
No |
Ejemplos usando la función MsgBox
En esta macro mostramos 3 mensajes.
-
Mensaje simple.
-
Mensaje con botón OkOnly + el icono de exclamación y un título.
-
Mensaje con icono de información + 3 botones + botón predeterminado, título, archivo de ayuda y contexto de la ayuda.
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Sub Mensaje() MsgBox "Prueba de mensaje" MsgBox "Prueba2", vbOKOnly + vbExclamation, "EXCELeINFO" MsgBox "Prueba3", vbInformation + vbYesNoCancel + vbDefaultButton3, "EXCELeINFO", "ayuda.hlp", 101 End Sub
Ahora usaremos la función MsgBox para mostrar un mensaje con los botones Si / no y con la instrucción IF vamos a ejecutar instrucciones dependiendo el botón seleccionado.
Sub MensajeConIF() Dim Respuesta As Byte Dim Titulo As String Titulo = "EXCELeINFO" Respuesta = MsgBox("Deseas continuar?" & Chr(13) & vbNewLine & "Recuerda...", vbQuestion + vbYesNo, Titulo) If Respuesta = vbYes Then MsgBox "Elegiste SÍ" Else MsgBox "Elegiste NO" End If End Sub
Y por último vamos a combinar de nuevo MsgBox con IF, pero ahora vemos que el IF lo podemos dejar en una sola línea donde le dinero que si el botón presionado fue No, entonces salimos de la macro usando Exit Sub.
Sub MensajeConIF2() Dim Respuesta As Byte Dim Titulo As String Titulo = "EXCELeINFO" Respuesta = MsgBox("Deseas continuar con la ejecución de la macro?", _ vbQuestion + vbYesNo, "Titulo") If Respuesta = 7 Then Exit Sub MsgBox "Elegiste SÍ" End Sub
Descarga el archivo de ejemplo
020 – Función MsgBox – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.