Sí No Cuadro de mensaje (Msgbox) - Ejemplos de código VBA

Este tutorial cubrirá cómo usar la función VBA MsgBox para mostrar cuadros de mensaje a los usuarios (incluido el cuadro de mensaje YesNo). También puede estar interesado en nuestro artículo sobre InputBoxes.

Función VBA MsgBox

En VBA, es fácil mostrar un MsgBox simple:

1 MsgBox "Este es un cuadro de mensaje"

Sin embargo, puede hacer mucho más que mostrar un simple cuadro de mensaje OK. Veamos rápidamente un ejemplo complicado antes de profundizar en los detalles …

Cuadro de mensaje VBA YesNo

A continuación crearemos un cuadro de mensaje con:

  • Un título "Título del cuadro de mensaje" y el mensaje "Texto"
  • Un icono de signo de interrogación
  • Opciones de Sí / No en lugar de un simple "Aceptar"
  • Botón predeterminado = "No"
123 Respuesta tenue como enteroanswer = MsgBox ("Texto", vbQuestion + vbYesNo + vbDefaultButton2, "Título del cuadro de mensaje")

El cuadro de mensaje devolverá vbYes o vbNo según la elección del usuario. Luego, puede realizar diferentes acciones según la elección:

12345 Si answer = vbYes EntoncesMsgBox "Sí"DemásMsgBox "No"Terminara si

En la siguiente sección, le mostraremos todas las opciones disponibles para usted al crear buzones de mensajes. Luego, le presentaremos la sintaxis de la función MsgBox y finalmente repasaremos otros ejemplos de cuadros de mensaje.

Opciones del cuadro de mensaje de VBA

Hecha un vistazo a la imagen de abajo. Aquí verá (casi) todas las opciones disponibles para usted al crear buzones de mensajes. Fíjate en los iconos y los diferentes botones.

Esta es una captura de pantalla del "MessageBox Builder" de nuestro complemento Premium VBA: AutoMacro. MessageBox Builder le permite diseñar rápidamente su cuadro de mensaje deseado e insertar el código en su módulo de código. También contiene muchos otros constructores de códigos, una extensa biblioteca de códigos VBA y una variedad de herramientas de codificación. Es imprescindible para cualquier desarrollador de VBA.

Sintaxis de la función MsgBox

MsgBox (indicador [, botones] [, título] [, archivo de ayuda, contexto])

prompt (obligatorio) - Este es el texto del cuadro de mensaje principal.

botones - Elija qué botones mostrar. Si se omite, "OK solo". Aquí también puede especificar qué icono mostrar y el botón predeterminado.

título - El título en la parte superior del cuadro de mensaje. Si se omite, se muestra el nombre de la aplicación actual (por ejemplo, Microsoft Excel).

archivo de ayuda - Especifique el archivo de ayuda al que se puede acceder cuando el usuario hace clic en el botón "Ayuda". Si se especifica, también debe agregar contexto (a continuación)

contexto - Expresión numérica que representa el número de contexto de ayuda asignado al tema de ayuda correspondiente.

Probablemente pueda ignorar los argumentos del archivo de ayuda y del contexto. Nunca los he visto usar.

Personalizar el título y el mensaje del cuadro de mensaje

La función MsgBox le permite personalizar el título y los mensajes de aviso así:

1 Msgbox "Mensaje", "Título"

Otro ejemplo:

123 Sub MsgBoxPromptTitle ()MsgBox "Paso 1 completo. Haga clic en Aceptar para ejecutar el paso 2", "Paso 1 de 5"End Sub

¡Importante! Debe recordar rodear su texto con citas.

Saltos de línea del cuadro de mensaje

También puede agregar saltos de línea a las indicaciones de su cuadro de mensaje con "vbNewLine".

123 Sub MsgBoxPromptTitle_NewLine ()MsgBox "Paso 1 completo". & vbNewLine & "Haga clic en Aceptar para ejecutar el paso 2", "Paso 1 de 5"End Sub

Observe que usamos el símbolo & para unir texto. Puede obtener más información sobre el uso de & con texto y otras opciones para insertar saltos de línea en nuestro artículo sobre cómo unir texto.

Iconos de MsgBox

VBA le brinda la posibilidad de agregar uno de los cuatro íconos prediseñados a sus cuadros de mensaje:

Constante de icono Icono
vbInformación
vbCritical
vbQuestion
vbExclamación

La constante Icon debe colocarse dentro del argumento del botón:

123 Sub MsgBoxQuestionIcon ()MsgBox "Ejemplo de pregunta", vbQuestionEnd Sub

Esto generará el cuadro de mensaje predeterminado "Aceptar" con el icono de Pregunta:

Observe cómo cuando escribe, el Editor de VBA le mostrará las opciones disponibles para usted:

Esto es útil porque no es necesario recordar la sintaxis exacta o los nombres de los iconos o botones.

Ahora haremos una demostración de cada icono de cuadro de mensaje:

Iconos de MsgBox - Información

123 Sub MsgBoxInformationIcon ()MsgBox "Ejemplo de información", vbInformationEnd Sub

Iconos de MsgBox - Crítico

123 Sub MsgBoxCriticalIcon ()MsgBox "Ejemplo crítico", vbCriticalEnd Sub

Iconos de MsgBox - Pregunta

123 Sub MsgBoxQuestionIcon ()MsgBox "Ejemplo de pregunta", vbQuestionEnd Sub

Iconos de MsgBox - Exclamación

123 Sub MsgBoxExclamationIcon ()MsgBox "Ejemplo de exclamación", vbExclamationEnd Sub

A continuación, hablaremos sobre la generación de cuadros de mensajes con diferentes diseños de botones. Si elige un tipo de cuadro de mensaje diferente, deberá agregar el tipo de icono después de los botones con un "+":

123 Sub MsgBoxQuestionIcon ()MsgBox "¿Desea continuar?", VbOKCancel + vbQuestionEnd Sub

Variables de MsgBox

Hasta ahora, hemos trabajado principalmente con el cuadro de mensaje "Aceptar" predeterminado. El cuadro de mensaje OK solo tiene una opción: presionar "OK" permite que el código continúe. Sin embargo, también puede especificar otras agrupaciones de botones: Aceptar / Cancelar, Sí / No, etc.

En cuyo caso, querrá realizar diferentes acciones según el botón que se presione. Veamos un ejemplo.

Aquí está el cuadro de mensaje que generaremos:

Este es el código completo (lo desglosaremos a continuación):

123456789101112 Sub MsgBoxVariable ()Respuesta tenue como enteroanswer = MsgBox ("¿Desea continuar?", vbQuestion + vbYesNo)Si answer = vbYes EntoncesMsgBox "Sí"DemásMsgBox "No"Terminara siEnd Sub

Primero asignamos la salida del cuadro de mensaje a una variable entera.

123 Respuesta tenue como enteroanswer = MsgBox ("¿Desea continuar?", vbQuestion + vbYesNo)

A continuación, usamos un If-Else para determinar qué hacer en función de qué botón se presiona:

12345 Si answer = vbYes EntoncesMsgBox "Sí"DemásMsgBox "No"Terminara si

La función MsgBox devuelve un valor entero (entre 1-7), por lo que definimos la variable como un tipo entero. Sin embargo, en lugar de hacer referencia al número entero, puede hacer referencia a una constante (por ejemplo, vbOK, vbCancel, etc.). Mire esta tabla para ver todas las opciones:

Botón Constante Valor
OK vbOK 1
Cancelar vbCancel 2
Abortar vbAbort 3
Rever vbRetry 4
Ignorar vbIgnore 5
vb Sí 6
No vbNo 7

Ahora demostraremos cada grupo de botones:

Cuadro de mensaje OK - vbOKOnly

Este es el cuadro de mensaje estándar de VBA.

123456 Sub MsgBox_OKOnly ()Respuesta tenue como enteroanswer = MsgBox ("OKOnly Example", vbOKOnly)End Sub

Aceptar Cancelar cuadro de mensaje - vbOKCancel

123456789101112 Sub MsgBox_OKCancel ()Respuesta tenue como enteroanswer = MsgBox ("Aceptar Cancelar ejemplo", vbOKCancel)Si answer = vbOK EntoncesMsgBox "Aceptar"DemásMsgBox "Cancelar"Terminara siEnd Sub

Sí No Cuadro de mensaje - vb Sí No

123456789101112 Sub MsgBox_YesNo ()Respuesta tenue como enteroanswer = MsgBox ("Sí No Ejemplo", vbYesNo)Si answer = vbYes EntoncesMsgBox "Sí"DemásMsgBox "No"Terminara siEnd Sub

Sí No Cancelar cuadro de mensaje - vbYesNoCancel

1234567891011121314 Sub MsgBox_YesNoCancel ()Respuesta tenue como enteroanswer = MsgBox ("Sí No Cancelar ejemplo", vbYesNoCancel)Si answer = vbYes EntoncesMsgBox "Sí"ElseIf answer = vbNo EntoncesMsgBox "No"DemásMsgBox "Cancelar"Terminara siEnd Sub

Cancelar reintento Ignorar cuadro de mensaje - vbAbortRetryIgnore

1234567891011121314 Sub MsgBox_AbortRetryIgnore ()Respuesta tenue como enteroanswer = MsgBox ("Anular reintento Ignorar ejemplo", vbAbortRetryIgnore)Si answer = vbAbort ThenMsgBox "Abortar"ElseIf answer = vbRetry ThenMsgBox "Reintentar"DemásMsgBox "Ignorar"Terminara siEnd Sub

Reintentar Cancelar cuadro de mensaje - vbRetryCancel

123456789101112 Sub MsgBox_RetryCancel ()Respuesta tenue como enteroanswer = MsgBox ("Ejemplo de reintento de cancelación", vbRetryCancel)Si answer = vbRetry EntoncesMsgBox "Reintentar"DemásMsgBox "Cancelar"Terminara siEnd Sub

Ejemplos de cuadro de mensajes de VBA

Confirmación del cuadro de mensaje antes de ejecutar la macro

Este código mostrará un cuadro de mensaje Sí No antes de llamar a una macro. Si se hace clic en Sí, se llama a la macro, si se hace clic en No, la macro no se ejecuta.

12345678 Sub Msgbox_BeforeRunning ()Respuesta tenue como enteroanswer = MsgBox ("¿Desea ejecutar Macro1?", vbQuestion + vbYesNo)Si answer = vbYes, entonces llame a Macro1End Sub

Cuadro de mensaje Sí / No - Salir de Sub

Aquí confirmaremos con el usuario si continuar ejecutando una macro. Si se hace clic en No, el código saldrá del sub, de lo contrario, el procedimiento continuará.

12345678910 Sub Msgbox_BeforeRunning ()Respuesta tenue como enteroanswer = MsgBox ("¿Desea continuar?", vbQuestion + vbYesNo)Si respuesta = vbNo, salga de Sub'Algún códigoEnd Sub

Cuadro de mensaje de VBA en Access VBA

Todos los ejemplos anteriores funcionan exactamente igual en Access VBA que en Excel VBA.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave