Contenido
- 1 Anatomía de un VBA MsgBox en Excel
- 2 Sintaxis de la función VBA MsgBox
- 3 Constantes de botón MsgBox de Excel VBA (ejemplos)
- 4 Botones MsgBox – vbOKOnly (predeterminado)
- 5 Botones MsgBox – Aceptar y Cancelar
- 6 Botones MsgBox: Anular, reintentar y omitir
- 7 Botones MsgBox: Sí y No
- 8 Botones MsgBox: Sí, No y Cancelar
- 9 Botones MsgBox: reintentar y cancelar
- 10 Botones MsgBox – Botón de ayuda
- 11 Botones MsgBox: configuración de un botón predeterminado
- 12 Constantes de icono de Excel VBA MsgBox (ejemplos)
- 13 Iconos de MsgBox – Crítico
- 14 Iconos de MsgBox – Pregunta
- 15 Iconos de MsgBox – Exclamación
- 16 Iconos de MsgBox – Información
- 17 Personalizar el título y el mensaje en MsgBox
- 18 Asignar valor MsgBox a una variable
- 19 Conoce nuestra tienda
- 20 Mejora tu nivel y logra tus objetivo
- 21 Ayúdanos a hacer crecer el proyecto
- 22 ¡Únete a nuestro Grupo de Facebook!
En Excel VBA, puede usar la función MsgBox para mostrar un cuadro de mensaje (como se muestra a continuación):
Un MsgBox no es más que un cuadro de diálogo que puede utilizar para informar a sus usuarios mostrando un mensaje personalizado u obtener algunas entradas básicas (como Sí / No o Aceptar / Cancelar).
Mientras se muestra el cuadro de diálogo MsgBox, se detiene su código VBA. Debe hacer clic en cualquiera de los botones en MsgBox para ejecutar el código VBA restante.Nota: En este tutorial, usaré el cuadro de mensaje de palabras y MsgBox indistintamente. Cuando trabaje con Excel VBA, siempre debe usar MsgBox .
Anatomía de un VBA MsgBox en Excel
Un cuadro de mensaje tiene las siguientes partes:
- Título : se utiliza normalmente para mostrar de qué trata el cuadro de mensaje. Si no especifica nada, muestra el nombre de la aplicación, que es Microsoft Excel en este caso.
- Aviso : este es el mensaje que desea mostrar. Puede usar este espacio para escribir un par de líneas o incluso mostrar tablas / datos aquí.
- Botón (s) : Si bien Aceptar es el botón predeterminado, puede personalizarlo para mostrar botones como Sí / No, Sí / No / Cancelar, Reintentar / Ignorar, etc.
- Icono de cierre : puede cerrar el cuadro de mensaje haciendo clic en el icono de cierre.
Sintaxis de la función VBA MsgBox
Como mencioné, MsgBox es una función y tiene una sintaxis similar a otras funciones de VBA.
MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )
- prompt : este es un argumento obligatorio. Muestra el mensaje que ve en MsgBox. En nuestro ejemplo, el texto «Este es un MsgBox de ejemplo» es el ‘mensaje’. Puede usar hasta 1024 caracteres en la solicitud y también puede usarlo para mostrar los valores de las variables. En caso de que desee mostrar un mensaje que tenga varias líneas, también puede hacerlo (más sobre esto más adelante en este tutorial).
- [buttons] : determina qué botones e iconos se muestran en el MsgBox. Por ejemplo, si uso vbOkOnly, solo mostrará el botón Aceptar, y si uso vbOKCancel, mostrará los botones Aceptar y Cancelar. Cubriré diferentes tipos de botones más adelante en este tutorial.
- [title] : aquí puede especificar qué título desea en el cuadro de diálogo del mensaje. Esto se muestra en la barra de título de MsgBox. Si no especifica nada, mostrará el nombre de la aplicación.
- [ helpfile ] : puede especificar un archivo de ayuda al que se puede acceder cuando un usuario hace clic en el botón Ayuda. El botón de ayuda solo aparecerá cuando use el código del botón. Si está utilizando un archivo de ayuda, también debe especificar el argumento de contexto.
- [context] : es una expresión numérica que es el número de contexto de ayuda asignado al tema de ayuda correspondiente.
Si es nuevo en el concepto de Msgbox, no dude en ignorar los argumentos [helpfile] y [context]. Rara vez he visto que se utilicen estos.
Nota: Todos los argumentos entre corchetes son opcionales. Solo el argumento ‘prompt’ es obligatorio.
Constantes de botón MsgBox de Excel VBA (ejemplos)
En esta sección, cubriré los diferentes tipos de botones que puede usar con un VBA MsgBox.
Antes de mostrarle el código VBA y cómo se ve MsgBox, aquí hay una tabla que enumera todas las diferentes constantes de botón que puede usar.
Constante del botón | Descripción |
vbOKOnly | Muestra solo el botón Aceptar |
vbOKCancel | Muestra los botones Aceptar y Cancelar. |
vbAbortRetryIgnore | Muestra los botones Abortar, Reintentar e Ignorar |
vb Sí No | Muestra los botones Sí y No |
vbYesNoCancel | Muestra los botones Sí, No y Cancelar |
vbRetryCancel | Muestra los botones Reintentar y Cancelar |
vbMsgBoxHelpButton | Muestra el botón de Ayuda. Para que esto funcione, debe usar los argumentos de ayuda y contexto en la función MsgBox |
vbDefaultButton1 | Hace que el primer botón sea predeterminado. Puede cambiar el número para cambiar el botón predeterminado. Por ejemplo, vbDefaultButton2 hace que el segundo botón sea el predeterminado |
Nota: Mientras repasa los ejemplos de creación de diferentes botones, es posible que se pregunte cuál es el sentido de tener estos botones si no tiene ningún impacto en el código.
¡Lo hace! Según la selección, puede codificar lo que desea que haga el código. Por ejemplo, si selecciona Aceptar, el código debería continuar y si hace clic en Cancelar, el código debería detenerse. Esto se puede hacer usando variables y asignando el valor del cuadro de mensaje a una variable. Cubriremos esto en las secciones posteriores de este tutorial.
Ahora echemos un vistazo a algunos ejemplos de cómo se pueden mostrar los diferentes botones en un MsgBox y cómo se ve.
Botones MsgBox – vbOKOnly (predeterminado)
Si solo usa el indicador y no especifica ninguno de los argumentos, obtendrá el cuadro de mensaje predeterminado como se muestra a continuación:
A continuación se muestra el código que le dará este cuadro de mensaje:
Sub mensaje()
MsgBox "Ejemplo de mensaje"
End Sub
Tenga en cuenta que la cadena de texto debe estar entre comillas dobles.
También puede usar la constante de botón vbOKOnly, pero incluso si no especifica nada, se toma por defecto.
Botones MsgBox – Aceptar y Cancelar
Si solo desea mostrar el botón Aceptar y Cancelar, debe usar la constante vbOKCancel
Sub MsgBoxcancelar()
MsgBox "¿Quieres continuar?", vbOKCancel
End Sub
Botones MsgBox: Anular, reintentar y omitir
Puede usar la constante ‘vbAbortRetryIgnore’ para mostrar los botones Anular, Reintentar y Omitir.
Sub MsgBoxanular()
MsgBox "¿Qué quieres hacer?", vbAbortRetryIgnore
End Sub
Botones MsgBox: Sí y No
Puede utilizar la constante ‘vbYesNo’ para mostrar los botones Sí y No.
Sub MsgBoxYesNo()
MsgBox "¿Debemos detenernos?", vbYesNo
End Sub
Botones MsgBox: Sí, No y Cancelar
Puede utilizar la constante ‘vbYesNoCancel’ para mostrar los botones Sí, No y Cancelar.
Sub MsgBoxYesNoCancel ()
MsgBox "¿Debemos detenernos?", VbYesNoCancel
End Sub
Botones MsgBox: reintentar y cancelar
Puede usar la constante ‘vbRetryCancel’ para mostrar los botones Reintentar y Cancelar.
Sub MsgBoxRetryCancel()
MsgBox "¿Qué desea hacer a continuación?", vbRetryCancel
End Sub
Botones MsgBox – Botón de ayuda
Puede utilizar la constante ‘vbMsgBoxHelpButton’ para mostrar el botón de ayuda. Puede usarlo con otras constantes de botón.
Sub MsgBoxRetryHelp()
MsgBox "¿Qué desea hacer a continuación?", vbRetryCancel + vbMsgBoxHelpButton
End Sub
Tenga en cuenta que en este código, hemos combinado dos constantes de botón diferentes ( vbRetryCancel + vbMsgBoxHelpButton ). La primera parte muestra los botones Reintentar y Cancelar y la segunda parte muestra el botón Ayuda.
Botones MsgBox: configuración de un botón predeterminado
Puede usar la constante ‘vbDefaultButton1’ para establecer el primer botón como predeterminado. Esto significa que el botón ya está seleccionado y si presiona enter, ejecuta ese botón.
A continuación se muestra el código que establecerá el segundo botón (el botón ‘No’) como predeterminado.
Sub MsgBoxOKCancel ()
MsgBox "¿Qué desea hacer a continuación?", VbYesNoCancel + vbDefaultButton2
End Sub
En la mayoría de los casos, el botón más a la izquierda es el botón predeterminado. Puede elegir otros botones mediante vbDefaultButton2, vbDefaultButton3 y vbDefaultButton4.
Constantes de icono de Excel VBA MsgBox (ejemplos)
Además de los botones, también puede personalizar los iconos que se muestran en el cuadro de diálogo MsgBox. Por ejemplo, puede tener un ícono rojo crítico o un ícono de información azul.
A continuación se muestra una tabla que enumera el código que mostrará el icono correspondiente.
Constante de icono | Descripción |
vbCritical | Muestra el icono de mensaje crítico |
vbQuestion | Muestra el icono de pregunta |
vbExclamation | Muestra el icono de mensaje de advertencia |
vbInformation | Muestra el icono de información |
Iconos de MsgBox – Crítico
Si desea mostrar un icono crítico en su MsgBox, use la constante vbCritical. Puede usar esto junto con otras constantes de botón (colocando un signo + entre los códigos).
Por ejemplo, a continuación se muestra un código que mostrará el botón Aceptar predeterminado con un icono crítico.
Sub MsgBoxIcono()
MsgBox "Este es un cuadro de ejemplo", vbCritical
End Sub
Si desea mostrar el icono crítico con los botones Sí y No, utilice el siguiente código:
Sub MsgBoxIcono()
MsgBox "Este es un cuadro de ejemplo", vbYesNo + vbCritical
End Sub
Iconos de MsgBox – Pregunta
Si desea mostrar un icono crítico en su MsgBox, use la constante vbQuestion.
Sub MsgBoxIcon()
MsgBox "Este es un cuadro de ejemplo", vbYesNo + vbQuestion
End Sub
Iconos de MsgBox – Exclamación
Si desea mostrar un icono de exclamación en su MsgBox, utilice la constante vbExclamation.
Sub MsgBoxIcono()
MsgBox "Este es un cuadro de ejemplo", vbYesNo + vbExclamation
End Sub
Iconos de MsgBox – Información
Si desea mostrar un icono de información en su MsgBox, use la constante vbInformation.
Sub MsgBoxInformacionIcono()
MsgBox "Este es un cuadro de ejemplo", vbYesNo + vbInformation
End Sub
Personalizar el título y el mensaje en MsgBox
Al usar MsgBox, puede personalizar el título y los mensajes de aviso.
Hasta ahora, el ejemplo que hemos visto ha utilizado Microsoft Excel como título. En caso de que no especifique el argumento del título, MsgBox usa automáticamente el título de la aplicación (que ha sido Microsoft Excel en este caso).
Puede personalizar el título especificándolo en el código como se muestra a continuación:
Sub MsgBoxInformacionIcono()
MsgBox "¿Desea continuar?", vbYesNo + vbQuestion, "Paso 1 de 3"
End Sub
Del mismo modo, también puede personalizar el mensaje de aviso.
También puede agregar saltos de línea en el mensaje de solicitud.
En el siguiente código, agregué un salto de línea usando ‘vbNewLine’.
Sub MsgBoxInformacionIcono()
MsgBox "¿Desea continuar?" & vbNewLine & "Haga clic en Sí para continuar", vbYesNo + vbQuestion, "Paso 1 de 3"
End Sub
También puede utilizar el carácter de retorno de carro – Chr (13) – o salto de línea – Chr (10) para insertar una nueva línea en el mensaje de solicitud.
Tenga en cuenta que puede agregar una nueva línea solo al mensaje de solicitud y no al título.
Asignar valor MsgBox a una variable
Hasta ahora, hemos visto ejemplos en los que hemos creado cuadros de mensaje y personalizamos los botones, los iconos, el título y el mensaje.
Sin embargo, hacer clic en un botón no ha hecho nada.
Con la función MsgBox en Excel, puede decidir qué desea hacer cuando un usuario hace clic en un botón específico. Y esto es posible ya que cada botón tiene un valor asociado.
Entonces, si hago clic en el botón Sí, la función MsgBox devuelve un valor (6 o la constante vbYes) que puedo usar en mi código. De manera similar, si el usuario selecciona el botón No, devuelve un valor diferente ((7 o la constante vbNo)) que puedo usar en el código.
A continuación se muestra una tabla que muestra los valores exactos y la constante devuelta por la función MsgBox. No es necesario que las memorice, solo sea consciente de ello y puede utilizar las constantes que son más fáciles de usar.
Botón pulsado | Constante | Valor |
OK | vbOk | 1 |
Cancelar | vbCancel | 2 |
Aborto | vbAbort | 3 |
Rever | vbRetry | 4 |
Ignorar | vbIgnore | 5 |
sí | vbYes | 6 |
No | vbNo | 7 |
Ahora veamos cómo podemos controlar el código de macro de VBA según el botón en el que hace clic el usuario.
En el siguiente código, si el usuario hace clic en Sí, se muestra el mensaje «Hizo clic en Sí», y si el usuario hace clic en No, muestra «Usted hizo clic en No».
Sub MsgBoxInformacionIcono()
Resultado = MsgBox("¿Desea continuar?", vbYesNo + vbQuestion)
If Resultado = vbYes Then
MsgBox "Hiciste clic en Sí"
Else
MsgBox "Hiciste clic en No"
End If
End Sub
En el código anterior, he asignado el valor de la función MsgBox a la variable Resultado. Cuando hace clic en el botón Sí, la variable Resultado obtiene la constante vbYes (o el número 6) y cuando hace clic en No, la variable Resultado obtiene la constante vbNo (o el número 7).
Luego utilicé una construcción If Then Else para verificar si la variable Resultado tiene el valor vbYes. Si lo hace, muestra el mensaje «Hizo clic en Sí», de lo contrario, muestra «Hizo clic en No».
Puede usar el mismo concepto para ejecutar un código si un usuario hace clic en Sí y sale del sub cuando hace clic en No.