Curso Excel VBA y Macros – Cap. 20 – Función MsgBox para mostrar mensajes combinada con IF

<<CURSO COMPLETO EN YOUTUBE>>

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 , No y Cancelar.

vbYesNo

4

Muestra los botones , 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

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

<<CURSO COMPLETO EN YOUTUBE>>

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