Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Función MsgBox en VBA

Función MsgBox en VBA

| 3 comentarios

La Función Msgbox permite que aparezca un cuadro con el mensaje que se haya especificado previamente.

En el cuadro se puede mostrar un simple mensaje, el cual debe estar escrito entre comillas, de esta forma el mensaje no se confundirá otros datos a entregar al Msgbox, y se evitará que la ejecución de la secuencia de comandos utilizados queden incompletos.

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 uso del Msgbox es para mostrar información, se puede usar el mismo Msgbox para mostrar varios botones, e identificar cual de los botones ha sido empleado.

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

 imagen 2 imagen 3 300x187 Función MsgBox en VBA

(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

iconos msgbox vba

 

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

3 comentarios

  1. 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").

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

  3. Bastante ilustrativo las aplicaciones de VBA

Deja una respuesta

Los campos requeridos estan marcados con *.