Mostrar Cuadro de mensaje MsgBox con botones Sí / No antes de ejecutar una macro en Excel VBA

Mostrar Cuadro de mensaje MSGBOX con botones Sí No antes de ejecutar una macro

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.

. Mensaje mostrado con MsgBox en VBA.

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

Cuadro de mensaje con los botones Sí y No.

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

Cuadro de mensaje con los botones Aceptar y Cancelar.

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

Cuadro de mensaje con los botones Sí, No y Cancelar

Figura 4. Cuadro de mensaje con los botones Sí, No y Cancelar

Descarga el archivo de ejemplo

Descargar el 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.

You may also like...