¿Para qué se usa MsgBox?
La Función Msgbox permite que aparezca un cuadro con un mensaje que se haya especificado previamente.
En el cuadro se puede mostrar un simple mensaje, par lo cual el mensaje debe estar escrito entre comillas.
Cuando se muestra este mensaje la la ejecución de la secuencia de comandos detendrá la ejecución de las siguientes líneas hasta que se presione alguno de los botones que se muestren en el mensaje.
Pero además se puede mostrar más que un simple texto. MsgBox permite hacer aparecer dentro del cuadro del texto el valor de una función ejecutada anteriormente, el resultado de una operación simple, o algún dato en general, para ello podemos recurrir al & (ampersand), el cual nos sirve para concatenar.
Vale recalcar que aunque el propósito central del Msgbox es mostrar un texto, este mensaje puede incluir la presentación de varios botones, para luego identificar cual de los botones ha sido presionado.
Ejemplo de MSGBOX
A continuación, procederé a mostrar un ejemplo sobre la aplicación de la ya mencionada herramienta: Msgbox, en el cual se calculará la edad en que la persona acabará sus estudios universitarios .
Sub bienvenida()
nombre = InputBox("ingrese su nombre")
edad = InputBox("Ingrese su edad")
nombre = UCase(nombre)
edad = edad + 5
Mensaje = nombre & ", podrías terminar la carrera a los " & (edad) & " años."
MsgBox Mensaje
End Sub
(Para mayor visualización de la imagen, hacer click en la misma)
Sintaxis MSGBOX
En el siguiente ejemplo podemos ver que el primer texto corresponde al mensaje a utilizar, luego se encuentra una constante que permite identificar que botón se mostrará , y como tercer dato tenemos el título a ser empleado.
Sub Mensaje()
MsgBox "Mensaje Principal", vbYesNo, "Título a mostrar"
End Sub
Sintaxis completa de VBA
La sintaxis completa contiene 5 parámetros:
prompt: corresponde al texto o descripción a mostrarse en el Msgbox, se puede utilizar hasta 1024 caracteres (aunque es poco probable que se llegue a necesitar tal cantidad), si se quiere usar cambios de línea (para una parte del mensaje este en otra línea), se puede hacer uso de la función Chr, con los valores 13 o 10.
buttons (botones): el segundo dato corresponde al botón a ser mostrado, en el cuadro "Msgbox constantes" se encuentran los valores que pueden ser usados.
title (título): es el título que aparece en la parte superior izquierda del Msgbox
helpfile: Se usa para que aparezca un botón de "ayuda", debe indicarse ente parámetro la ruta de un archivo *.chm o *.hlp. Este cuarto parámetro casi no es usado por el trabajo adicional que representa construir un archivo *.chm o *.hlp
Context: es un número que permite identificar un tema dentro del archivo de ayuda, al igual que el cuarto parámetro del Msgbox tampoco es usado con regularidad.
MSGBOX Constantes
En el siguiente cuadro se muestra la relación de constantes que se pueden emplear como segundo parámetro en la sintaxis mostrada.
Constante | Valor | Propósito |
vbOKOnly | 0 | Aparece el botón OK |
vbOKCancel | 1 | Botón OK y Cancel |
vbAbortRetryIgnore | 2 | Botones Abort, Retry, y Ignore |
vbYesNoCancel | 3 | Botones Yes, No, y Cancel |
vbYesNo | 4 | Botones Yes y No |
vbRetryCancel | 5 | Botones Retry y Cancel |
vbCritical | 16 | Mensaje Crítico |
vbQuestion | 32 | Símbolo de interrogación |
vbExclamation | 48 | Símbolo de Exclamación |
vbInformation | 64 | Símbolo de Información |
vbDefaultButton1 | 0 | Primer botón aparece seleccionado por defecto |
vbDefaultButton2 | 256 | Segundo botón aparece seleccionado por defecto |
vbDefaultButton3 | 512 | Tercer botón aparece seleccionado por defecto |
vbDefaultButton4 | 768 | Cuarto botón aparece seleccionado por defecto |
Valores de Retorno del MSGBOX
Los "Msgbox return values", o valores de retorno del Msgbox, son constantes que se obtienen luego de presionar un botón, en el siguiente ejemplo la variable respuesta contiene este valor de retorno.
Sub Mensaje2()
respuesta = MsgBox ("Mensaje Principal", vbYesNo, "Título a mostrar")
End Sub
En este ejemplo la variable respuesta es la que nos permite identificar cual es el botón que se llegó a presionar al mostrar el Msgbox, los posibles valores que esta variable puede tener son los siguientes:
Constante | Valor | Permite identificar |
vbOK | 1 | Se presionó el botón OK |
vbCancel | 2 | Se presionó el botón Cancel |
vbAbort | 3 | Se presionó el botón Abort |
vbRetry | 4 | Se presionó el botón Retry |
vbIgnore | 5 | Se presionó el botón Ignore |
vbYes | 6 | Se presionó el botón YES |
vbNo | 7 | Se presionó el botón NO |
La variable respuesta usada en el ejemplo puede ser combinada con la estructura de control Select case, a fin de poder determinar distintas acciones que se podrían realizar en función del botón elegido, para ellos veamos el siguiente ejemplo:
Sub Mensaje3()
respuesta = MsgBox("Hola", vbYesNoCancel, "Título")
Select Case respuesta
Case vbYes
MsgBox "Respuesta Si"
Case vbNo
MsgBox "Respuesta NO"
Case vbCancel
MsgBox "Respuesta Cancel"
End Select
End Sub
Añadir íconos al MSGBOX en VBA
También es posible añadir íconos, para ello es necesario que el segundo parámetro se sume la constante correspondiente al ícono que se desea añadir, por ejemplo:
Sub Mensaje4()
x = MsgBox("Mensaje", vbYesNo + vbCritical, "Título 1")
End Sub
Constante | Ícono a mostrar |
vbCritical | Ícono de mensaje crítico, círculo rojo con una X |
vbQuestion | Ícono azul con un signo de "?" |
vbExclamation | Triángulo amarillo con un cierre de admiración"!" |
vbInformation | Círculo azul con una "i" |
Para continuar revisando los primeros conceptos relacionados con las macros, se recomienda revisar: Introducción a las Macros
01/08/2014 a las 4:44 pm
La función de MsgBox tiene un fin simple, el cual es mostrar en una ventana chica lo programado anteriormente. Un ejemplo sería:
Sub Macros ()
MiNombre = Worksheet ("Hoja1").Range("A1").Value
MsgBox MiNombre
End Sub
Por tanto, la palabra MiNombre que se encuentra en la Hoja 1 y en el Rango A1, aparecerá en una ventana de MsgBox. Asimismo, se puede realizar lo mismo en la hoja activa, sólo se debe quitar: Worksheet ("Hoja1").
02/08/2014 a las 10:45 pm
La función MsgBox en VBA tiene 5 argumentos: Prompt, Buttons, title, helpfile y context. Solo el argumento Prompt es obligatorio pues es la cadena de texto que se muestra como mensaje y cuya longitud máxima es de 1024 caracteres según el tipo de fuente a utilizar
21/03/2021 a las 10:23 am
Bastante ilustrativo las aplicaciones de VBA