Mostrar Cuadro de mensaje MsgBox con botones Sí / No antes de ejecutar una macro en Excel VBA
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.
Generalidades de la función MsgBox en VBA
El uso de la función MsgBox en VBA puede ser tan sencillo o elaborado como desees. La siguiente es la sintaxis básica del uso de MsgBox:
MsgBox [mensaje], [botones], [título], [archivo de ayuda], [contexto]
Ahora vemos el uso de MsgBox en un caso funcional:
Sub Mensaje() MsgBox "Mensaje de prueba", vbOKOnly + vbInformation, "EXCELeINFO" End Sub
En la Figura 1 vemos el mensaje mostrado.
Figura 1. Mensaje mostrado con MsgBox en VBA.
Argumentos de la función MsgBox
A continuación enlisto cada uno de los argumentos de la función MsgBox de una manera sencilla:
-
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 separa 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.
Ver video Función MsgBox en VBA
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Valores devueltos por los botones
El cuadro de mensaje devuelto por la función MsgBox puede contener botones y esos botones tendrán asignado un valor numérico, mismo que podrá ser evaluado para tomar decisiones sobre cuál botón fue presionado. A continuación una lista de los botones que se pueden usar y los valores enteros que devuelven.
-
vbOK, Valor 1.
-
vbCancel, Valor 2.
-
vbAbort, Valor 3.
-
vbRetry, Valor 4.
-
vbIgnore, Valor 5.
-
vbYes, Valor 6.
-
vbNo, Valor 7.
Ejemplo 1. Botones Sí / No
En este ejemplo usaremos la variable Pregunta que nos guardará el valor de los botones Sí y No, dependiendo el botón que sea presionado. Posteriormente con la sentencia If evaluaremos el botón presionado y ejecutaremos un código dependiente cuál se presionó.
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo ' Option Explicit Sub SiNo() Dim Pregunta As String Pregunta = MsgBox("Deseas continuar", vbYesNo + vbQuestion, "EXCELeINFO") If Pregunta = vbNo Then MsgBox "Elegiste No" 'Macros Else MsgBox "Elegiste Sí" End If End Sub
Figura 2. Cuadro de mensaje con los botones Sí y No.
Ejemplo 2. Botones Aceptar / Cancelar
Ahora, en lugar de los botones Sí y No, mostraremos los botones Aceptar y Cancelar, y también usando la sentencia If evaluaremos cuál fue presionado.
Sub AceptarCancelar() Dim Pregunta As Integer Pregunta = MsgBox("Deseas continuar?", vbOKCancel, "EXCELeINFO") If Pregunta = 2 Then MsgBox "Elegiste Cancelar": Exit Sub MsgBox "Elegiste Aceptar" End Sub
Figura 3. Cuadro de mensaje con los botones Aceptar y Cancelar.
Ejemplo 3. Botones Sí, No y Cancelar
Ahora mostraremos 3 botones en el MsgBox, y en lugar de usar la sentencia If usaremos Select Case para evaluar el resultado del botón elegido. Tendremos 3 posibles valores correspondientes a los 3 botones.
Sub SiNoCancelar() Dim Pregunta As Integer Pregunta = MsgBox("Deseas continuar?", vbYesNoCancel + vbInformation, "EXCELeINFO") Select Case Pregunta Case Is = 6 MsgBox "Presionaste Sí" Case Is = 7 MsgBox "Presionaste No" Case Else MsgBox "Presionaste Cancelar" End Select End Sub
Figura 4. Cuadro de mensaje con los botones Sí, No y Cancelar
Descarga el archivo de ejemplo
Botones de Sí y No en 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.