Con Msgbox en VBA para Excel podemos mandar de manera muy sencilla mensajes a los usuarios cuando estamos utilizando VBA bien en una macro normal o bien en un evento (ver más sobre eventos). Este mensaje aparece en la pantalla del usuario como una ventana y puede tener varios elementos de configuración.
Antes de nada tengo que aclarar que un Msgbox puede ser muy útil en cualquier aplicación basada en Office. Puede utilizarse en cualquiera de sus programas y en este breve tutorial mostraremos cómo hacerlo en Excel pero será igual de válido en cualquier otro.
Sintaxis de Msgbox en VBA
La función Msgbox tiene una sintaxis bastante sencilla pero podemos complicarla mucho, casi tanto como se quiera. Básicamente esta función lanza un pop-up con un mensaje. Este pop-up tiene los siguientes argumentos:
- Mensjae: una cadena de texto que se mostrará al usuario.
- Título: es opcional. También una cadena de texto que deberá ser breve para mostrar al usuario.
- Botones: es opcional, por defecto aparecerá “Aceptar”. Los botones pueden ser algunos de los siguientes: vbOKonly, vbCancelOnly, vbYesNo, vbCritical, vbExclamation, vbQuestion…
Ejemplos de Msgbox
A continuación vamos a mostrar algunos ejemplos de esta función y sus resultados.
Ejemplo1: Sólo el mensaje.
Sub MensajeSencillo() MsgBox "Bienvenidos a esta web!" End Sub
Como puede verse en el código que hemos escrito, el mensaje tiene que ir escrito entre comillas dobles. En la siguiente imagen veréis el resultado de esta macro.
Ejemplo2: Mensaje con una exclamación de título
Sub Mensaje_con_botón() MsgBox "Bienvenidos a esta web!", vbExclamation End Sub
Este mensaje además de ser muy visual, lanza una alerta sonara típica de windows. Como ves, el botón es el de aceptar pero en esta ocasión hay un símbolo de exclamación que hace más “pro” el mensaje.
Ejemplo3: mensaje con botones de yes y no y título
Como puede verse en el siguiente ejemplo hemos añadido un ejemplo con los tres componentes principales de un Msgbox. No es muy complejo hacerlo pero aún podemos complicarlo un poco más. Fíjate que el título ha cambiado, ya no pone “Microsoft Excel” sino que pone “Mi título”
Sub Mensaje_con_título() MsgBox "Bienvenidos a esta web!", vbYesNo, "Mi título" End Sub
Ejemplo4: Combinar dos tipos de botones
En este ejemplo vamos a combinar el botón de vbYesNo para que aparezca como en la anterior imagen con el de la exclamación del ejemplo 2.
Sub Mensaje_con_dos_botones() MsgBox "Bienvenidos a esta web!", vbYesNo + vbExclamation, "Mi título" End Sub
En la siguiente imagen vemos como quedan combinados ambos botones creando un efecto muy útil e interesante.
Ejemplo5: obtener la respuesta si o no del Msgbox
¿Pero se puede hacer? Claro! Sino no habría posibilidad de poner dos botones. Obtener la respuesta es muy útil en los casos en los que queremos hacer algo o no hacerlo. En el ejemplo siguiente, VBA preguntará al usuario si está seguro de querer poner en rojo la celda A1 de este libro (ver más sobre formato de celdas).
Sub Obtener_valor_del_mensaje() 'primero pongo la pregunta resultado = MsgBox("¿Quieres pintar de rojo la celda A1?", vbYesNo, "Colorear A1") 'ahora manejo el resultado a mi antojo If resultado = vbYes Then Range("A1").Interior.Color = vbRed End If End Sub
El resultado de esta pequeña macro te animo a que lo descubras tú mismo.
En el siguiente enlace puedes descargar un libro con ejemplos para que puedas practicar tú mismo este pequeño ejercicio: