You are on page 1of 9

LA FUNCIÓN MSGBOX EN

VBA
La función MsgBox en VBA nos permite mostrar un mensaje
dentro de un cuadro de diálogo en espera de que el usuario de
Excel haga clic sobre alguno de los botones provistos. Si lo
deseamos podemos tomar alguna acción específica después de
conocer el botón pulsado por el usuario.
ARGUMENTOS DE LA FUNCIÓN MSGBOX
La función MsgBox en VBA tiene 5 argumentos, los cuales
explicaré a continuación:
• Prompt (obligatorio): Es la cadena de texto que se mostrará
como el mensaje dentro del cuadro de diálogo. La longitud
máxima es de 1024 caracteres, pero depende del tipo de
fuente utilizada.
• Buttons (opcional): Expresión numérica que proviene de la
suma de ciertas constantes que representan el tipo de botón
e iconos a desplegar.
• Title (opcional): Cadena de texto que se mostrará como el
título del cuadro de diálogo. Si se omite, el título será el
nombre de la aplicación.
• HelpFile (opcional): Cadena de texto con la ubicación del
archivo de ayuda asociado al cuadro de diálogo. Si se
especifica este argumento, debe indicarse también Context.
• Context (opcional): Valor numérico asignado por el autor al
tema de ayuda. Si se especifica este argumento, debe
indicarse también HelpFile.
Para dejar en claro el uso de cada uno de los argumentos de la
función haremos varios ejemplos y para cada uno de ellos crearé
un botón de comando ActiveX e insertaré el código
correspondiente en su evento Click. Al final del artículo
encontrarás el vínculo para descargar el libro de trabajo.
EJEMPLO 1: LA FUNCIÓN MSGBOX EN
VBA
Ya que solamente el primer argumento de la función MsgBox es
obligatorio, podemos crear un mensaje informativo para el usuario
con la siguiente línea de código:

1 Private Sub CommandButton1_Click()


2 MsgBox "Hola Mundo"
3 End Sub

Al ejecutar este código se mostrará un cuadro de diálogo como el


siguiente:

Al no haber especificado ningún valor para el segundo


argumento, se muestra solamente el botón Aceptar. Y ya que
tampoco hay un tercer argumento, el cuadro de diálogo tendrá el
título “Microsoft Excel” que es el nombre de la aplicación.

EJEMPLO 2: EL ARGUMENTO TITLE


Antes de revisar el segundo argumento de la función MsgBox,
hablaremos sobre su tercer argumento que es el título del cuadro
de diálogo. Para poner un título personalizado será suficiente
indicarlo de la siguiente manera:

1 Private Sub CommandButton2_Click()


2 MsgBox "Hola Mundo", , "Mensaje especial"
3 End Sub
Esta instrucción mostrará el título del cuadro de diálogo como
“Mensaje especial” y ya no se mostrará el nombre de la
aplicación. Observa el resultado:

EJEMPLO 3: EL ARGUMENTO BUTTONS


Hasta ahora solo has visto el botón Aceptar en el cuadro de
diálogo, pero el segundo argumento de la función MsgBox nos
permitirá indicar los botones que deseamos mostrar y también
podremos elegir el icono desplegado y el comportamiento del
cuadro de diálogo. La siguiente tabla indica los valores que
podemos utilizar para este argumento:
Todos estos valores los podemos dividir en cinco grupos. El
primer grupo (0, 1, 2, 3, 4, 5) nos permite indicar los botones que
se mostrarán en el cuadro de diálogo, el segundo grupo (16, 32,
48, 64) determinará el tipo de ícono mostrado, el tercer grupo (0,
256, 512, 768) es útil para indicar el botón predeterminado. El
cuarto grupo (0, 4096) es la modalidad del cuadro de diálogo y el
último grupo, que son los valores restantes, nos permiten indicar
la alineación del texto y si deseamos mostrar un botón de Ayuda.

Ya que los valores de cada grupo son excluyentes, solo hace


sentido elegir un valor de cada uno de ellos. De esta manera, si
deseo mostrar los botones Si y No, y además mostrar un icono de
mensaje de advertencia, entonces debo utilizar la siguiente
instrucción:
1 Private Sub CommandButton3_Click()
2 MsgBox "Hola Mundo", vbYesNo + vbExclamation, "Mensaje especial"
3 End Sub

Para el segundo argumento puedes utilizar las constantes


definidas para cada opción o utilizar directamente el valor
numérico correspondiente de acuerdo a la tabla. El resultado de
esta instrucción será el siguiente:

Para cada opción adicional que desees indicar deberás agregarla


utilizando el símbolo de suma (+). Recuerda que este argumento
este argumento de la función MsgBox es de valor numérico, así
que Excel obtendrá la suma total para conocer las opciones
indicadas.

EJEMPLO 4: CONOCER EL BOTÓN


PULSADO
Para conocer el botón que ha sido pulsado por el usuario, es
necesario guardar el valor devuelto por la función MsgBox en una
variable:

resultado = MsgBox("Hola Mundo", vbAbortRetryIgnore

+ vbQuestion, "Mensaje especial")

Antes de continuar debo mencionar algo importante sobre esta


instrucción ya que, a diferencia de las anteriores, en esta ocasión
los argumentos de la función MsgBox están encerrados en
paréntesis. Esto se debe a una regla de programación en VBA la
cual indica que cuando se llama a una función que devolverá un
valor el cual será asignado a una variable, su lista de argumentos
deberá estar rodeada por paréntesis. Así que no podemos olvidar
colocar los paréntesis si queremos conocer el botón pulsado por
el usuario.

Ahora bien, la variable resultado guardará el valor devuelto por la


función MsgBox el cual puede ser cualquiera de las siguientes
opciones dependiendo los botones que hayamos decidido
mostrar:

Una vez que el usuario hace clic sobre un botón, la función


MsgBox nos devuelve el valor correspondiente y podremos
comparar dicho valor con las contantes mencionadas en la tabla
anterior. Para nuestro ejemplo, utilizaré una sentencia Select
Case para comparar la variable resultado con todas las opciones
posibles:
Private Sub CommandButton4_Click()
1 resultado = MsgBox("Hola Mundo", vbAbortRetryIgnore + vbQuestion, "Mensaje especi
2 Select Case resultado
3 Case vbOK:
4 MsgBox "Se pulsó el botón Aceptar"
5 Case vbCancel:
MsgBox "Se pulsó el botón Cancelar"
6 Case vbAbort:
7 MsgBox "Se pulsó el botón Anular"
8 Case vbRetry:
9 MsgBox "Se pulsó el botón Reintentar"
Case vbIgnore:
10 MsgBox "Se pulsó el botón Omitir"
11 Case vbYes:
12 MsgBox "Se pulsó el botón Si"
Case vbNo:
13 MsgBox "Se pulsó el botón No"
14 End Select
15 End Sub
16
17
18
19
Una vez identificado el botón sobre el cual el usuario ha hecho
clic, mostraremos otro mensaje con el nombre de dicho botón. En
un caso real, esa línea de código sería reemplazada por las
instrucciones que se deseas ejecutar de acuerdo a la respuesta
del usuario.

En nuestro ejemplo mostramos un cuadro de diálogo con los


botones Anular, Reintentar y Omitir, así que si el usuario hace clic
sobre el botón Reintentar se mostrará el mensaje que nos
confirmará dicha acción:

Con los ejemplos realizados hasta el momento hemos cubierto la


gran mayoría de opciones de uso de la función MsgBox en VBA.
La verdad es que los últimos dos argumentos de la función son
muy poco utilizados pero haremos un último ejemplo para mostrar
su uso.
EJEMPLO 5: EL BOTÓN DE AYUDA
En la sección del ejemplo 3 mostré la tabla de posibles opciones
para el argumento Buttons y una de ellas es la
opción vbMsgBoxHelpButton la cual ocasionará que se muestre
un botón con la leyenda Ayuda dentro del cuadro de diálogo. El
único objetivo de este botón es mostrar un archivo externo con
ayuda adicional para el usuario sobre los botones que puede a
pulsar.
Para que el botón de Ayuda funcione correctamente es necesario
utilizar el cuarto y quinto argumento de la función MsgBox. En el
cuarto argumento debemos indicar la ruta donde se encuentra el
archivo de ayuda, que generalmente es un archivo CHM, y el
quinto argumento será utilizado para indicar el número del tema
que será mostrado. Este último argumento es una característica
de los archivos de ayuda, y es una configuración que se hace al
construir ese tipo de archivos.

Para nuestro ejemplo utilizaremos un archivo de ayuda


previamente elaborado y donde sabemos que existe el tema de
ayuda 20000 y por lo tanto podemos utilizar las instrucciones
siguientes para mostrarlo:

1 Private Sub CommandButton5_Click()


2 strRuta = ThisWorkbook.Path & "CHM-example.chm"
3 MsgBox "Hola Mundo", vbOKCancel + vbCritical + vbMsgBoxHelpButton, _
4 "Mensaje especial", strRuta, 20000
End Sub
5
Para este ejemplo es necesario colocar el archivo CHM en la
misma carpeta que el libro de Excel ya que he utilizado la
instrucción ThisWorkbook.Path para indicar que el archivo de
ayuda se encuentra en la misma ubicación. Al hacer clic sobre el
botón Ayuda, se abrirá una nueva ventana que nos permitirá
visualizar el archivo indicado.
Con este último ejemplo hemos cubierto todos los argumentos de
la función MsgBox en VBA y estás listo para comenzar a crear
tus propios mensajes dentro de tus aplicaciones de
Excel. Descarga el libro de trabajo para probar por ti mismo cada
uno de los ejemplos y seguir experimentando con la función
MsgBox.

You might also like