You are on page 1of 9

FUNCIÓN MSGBOX

La función MsgBox en VBA nos permite mostrar un mensaje dentro de un cuadro de
diálogo en espera de que el usuario 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.

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

Private Sub CommandButton1_Click()
MsgBox "Hola Mundo"
End Sub

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

Para poner un título personalizado será suficiente indicarlo de la siguiente manera: 1 2 3 Private Sub CommandButton2_Click() MsgBox "Hola Mundo". el cuadro de diálogo tendrá el título “Microsoft Excel” que es el nombre de la aplicación. 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: . se muestra solamente el botón Aceptar. "Mensaje especial" 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.Al no haber especificado ningún valor para el segundo argumento. Y ya que tampoco hay un tercer argumento. 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. . Observa el resultado: Ejemplo 3: El argumento Buttons Hasta ahora solo has visto el botón Aceptar en el cuadro de diálogo.

4096) es la modalidad del cuadro de diálogo y el último grupo. entonces debo utilizar la siguiente instrucción: 1 2 3 Private Sub CommandButton3_Click() MsgBox "Hola Mundo". 32. 64) determinará el tipo de ícono mostrado. que son los valores restantes. El primer grupo (0. y además mostrar un icono de mensaje de advertencia. 4. 512. 3. El cuarto grupo (0. nos permiten indicar la alineación del texto y si deseamos mostrar un botón de Ayuda. 5) nos permite indicar los botones que se mostrarán en el cuadro de diálogo. 768) es útil para indicar el botón predeterminado.Todos estos valores los podemos dividir en cinco grupos. "Mensaje especial" End Sub . si deseo mostrar los botones Si y No. 256. solo hace sentido elegir un valor de cada uno de ellos. el segundo grupo (16. Ya que los valores de cada grupo son excluyentes. vbYesNo + vbExclamation. 1. el tercer grupo (0. 2. 48. De esta manera.

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: . 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". Recuerda que este argumento este argumento de la función MsgBox es de valor numérico. su lista de argumentos deberá estar rodeada por paréntesis. 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 (+). "Mensaje especial") Antes de continuar debo mencionar algo importante sobre esta instrucción ya que. a diferencia de las anteriores. así que Excel obtendrá la suma total para conocer las opciones indicadas.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. 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. vbAbortRetryIgnore + vbQuestion. Así que no podemos olvidar colocar los paréntesis si queremos conocer el botón pulsado por el usuario. Ahora bien.

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

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. vbokonly. espera a que el usuario haga clic en un botón y devuelve un entero que indica el botón utilizado..Ejecutar la aplicación Ejercicio 2 Reemplaza el código del botón de comando anterior en el evento click e ingresa el ..Incluir el el command1 el siguiente codigo en el evento click msgbox "Actualización terminada".Con los ejemplos realizados hasta el momento hemos cubierto la gran mayoría de opciones de uso de lafunción MsgBox en VBA. Otros Ejercicios Muestra un mensaje en un cuadro de diálogo.Crear un formulario con un botón de comando como se muestra en la figura 2.. Ejercicio 1 1. "Información" 3.

Importación de datos de venta." & _ vbCrLf & ".Venta por proveedor." INPUTBOX Esta función muestra un cuadro de diálogo modal (éste es un término técnico para definir un formulario que ha de cerrarse antes de poder continuar con el desarrollo . "Actualización terminada.Cálculos de impuestos." & vbCrLf & "." & vbCrLf _ . vbYesNo. "Información importante" Ejercicio 3 Reemplaza el código del botón de comando anterior en el evento click e ingresa el siguiente código Dim intRespuesta As Integer intRespuesta = MsgBox("¿Quieres seguir?".Cálculos de impuestos." & vbCrLf & _ ". vbOKOnly." & vbCrLf . Información importante") If intRespuesta = 6 Then MsgBox"Seguimos" Else MsgBox"Terminamos" End If Ejercicio 4 Reemplaza el código del botón de comando anterior en el evento click e ingresa el siguiente código msgbox "Actualización terminada:" & vbCrLf & vbCrLf & _ ". vbExclamation + vbOKOnly." & vbCrLf & _ ".siguiente código msgbox "¿Quieres seguir?"." Ejercicio 5 Reemplaza el código del botón de comando anterior en el evento click e ingresa el siguiente código msgbox "Actualización terminada:" & vbCrLf & vbCrLf & _ ".Venta por proveedor. vbQuestion + vbYesNo.Importación de datos de venta. _ "Actualización terminada.

normal del programa). predeterminado.INPUTBOX") MsgBox "Su nombre es: " & Val Ejercicio 2 Reemplaza el código del botón de comando anterior en el evento click e ingresa el siguiente código Dim Val As String Val = InputBox("Digita tu numero de cuenta". título) Donde texto es el texto descriptivo que aparecerá en la caja de entrada. "Ejemplo 1.. un cuadro de texto y dos botones "ACEPTAR" y "CANCELAR".INPUTBOX". Las cajas de entrada permiten el ingreso de un valor o de un texto y devuelven una cadena con el texto ingresado. Ejemplo .15 'Obtenemos el IVA MsgBox "El iva es: " & A FUNCION INPUTBOX (Cajas de Entrada)."ABC123") Ejercicio 3 Reemplaza el código del botón de comando anterior en el evento click e ingresa el siguiente código Dim A As Double 'Números con muchos decimales A = InputBox("Ingresa el precio del cual quieres obtener el IVA") A = A * 0. Ejercicio 1 Reemplaza el código del botón de comando anterior en el evento click e ingresa el siguiente código Dim Val As String Val = InputBox("Cual es tu nombre". La sintaxis de esta función es: InputBox(texto. "Ejemplo 2. título es el texto que aparecerá en la barra de título de la caja de entrada. que contiene un Título y un Mensaje (definibles).. predeterminado es el valor predeterminado que aparecerá en la caja de texto de la caja de entrada.

"Multiplicar por 2") lblProd.Caption=InputBox("Introduzca un texto".Crea un nuevo proyecto estándar y coloca en el formulario los siguientes controles: Control Propiedad Valor Form Name frmCajas "" Caption Caja de mensajes y de entrada Label Name lblTexto "" Caption Label Name lblProd "" Caption 0 CommandButton Name cmdTexto "" &Escribir Caption CommandButton Name cmdProd "" &Multiplicar Caption Escribe el siguiente código en el formulario: Private Sub Form_Load() MsgBox "Prueba de Caja de Mensajes"& vbCrLf &"y Caja de Entrada" End Sub Private Sub cmdTexto_Click() lblTexto."Cuadro de entrada") End Sub Private Sub cmdProd_Click() Dim numer as String numer=InputBox("Introduzca un número".0."introducir".Caption=2*Cint(numer) End Sub .