Saltar al contenido

Como crear un MsgBox VBA en Excel


.

COMO CONSTRUIR UN MSGBOX EN VBA PARA EXCEL

Normalmente en programación en VBA es preciso saber como se construye un MsgBox en VBA; cuando se buscan datos mediante macro o procedimientos de VBA, es útil que Excel informe el resultado de un procedimiento; por ejemplo si se están contando datos, tal vez se requiera obtener un informe con la cantidad de datos recontados; o quizás si se busca cierto dato y no se encuentra es preciso que queramos que Excel informe tal situación, en definitiva siempre se esta recurriendo a los MsgBox para mostrar información de las  Macros de  VBA, mostrar información de un proceso que se está realizando  o recibir información del usuario; por ende a todo aquel que programe una Macro le es imperioso que conozca su funcionamiento, muchas veces también es preciso darle al usuario la opción sobre que procedimiento seguir si se encuentra cierto dato buscado o sucede cierto evento.

En este tutorial pretendo mostrar como se construye un MsgBox, como así también como se utiliza un MsgBox, voy a mostrar las distintas formas de como  puede construirse un Msgbox, los valores que se le asigna  a cada botón, siendo útil cuando se le asigna a una variable el valor del MsgBox.
El MsgBox en forma sencilla se podría definir como un cuadro de diálogo, que crea una interfaz entre el usuario y el programa, estando a la espera que el usuario haga click en algún botón del mismo para realizar una acción, devolviendo un dato tipo Integer, correspondiente al botón elegido, más adelante se verán estos valores asignados  a cada botón.
La sintaxis es la siguiente MsgBox(prompt[, buttons][, title][, helpfilecontext]), donde prompt es la expresión en cadena que sale en el MsgBox, siendo su longitud máxima de 1024 caracteres, en caso que se use más de una línea se debe separar la misma con un caracter de retorno de carro como (Chr(13)), o un caracter de avance de linea o combinación de ambos, más adelante se vera el uso de (chr).

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

La parte de la sintaxis denominada buttons, es opcional y especifica el número y tipo de botón a  mostrar en el MsgBox, esto será aclarado más adelante, en caso que no se inserte valor, toma el valor por defecto que es 0.
El title es también opcional, y no hace otra cosa que mostrar en la barra de título del cuadro de diálogo o MsgBox, el título que le proporcionamos al mismo, caso que no se ingrese se muestra el nombre de la aplicación. 
Helpfile y context son opcionales, el primero identifica el archivo de ayuda interactiva, es obligatorio especiicar context si se especifica helpfile; context es el número de contexto de Ayuda asignado por el programador o autor del tema de ayuda, normalmente no se utiliza, pero es bueno saberlo.
Bien, ahora que ya se ha explicado  la sintaxis del MsgBox, es preciso saber cuales son los valores que asigna VBA a caga botón o buttons que es el primer argumento obligatorio, seguidamente se detallan:
ConstanteValorDescripción
VbOKOnly0Muestra
solamente el botón Aceptar.
VbOKCancel1Muestra
los botones Aceptar y Cancelar.
VbAbortRetryIgnore2Muestra
los botones Anular, Reintentar e Ignorar.
VbYesNoCancel3Muestra
los botones Sí, No y Cancelar.
VbYesNo4Muestra
los botones Sí y No.
VbRetryCancel5Muestra
los botones Reintentar y Cancelar.
VbCritical16Muestra
el icono de mensaje crítico.
VbQuestion32Muestra
el icono de pregunta de advertencia.
VbExclamation48Muestra
el icono de mensaje de advertencia.
VbInformation64Muestra
el icono de mensaje de información.
VbDefaultButton10El
primer botón es el predeterminado.
VbDefaultButton2256El
segundo botón es el predeterminado.
VbDefaultButton3512El
tercer botón es el predeterminado.
VbDefaultButton4768El
cuarto botón es el predeterminado.
VbApplicationModal0Aplicación
modal; el usuario debe responder al cuadro de mensajes antes de poder seguir
trabajando en la aplicación actual.
VbSystemModal4096Sistema
modal; se suspenden todas las aplicaciones hasta que el usuario responda al
cuadro de mensajes.
VbMsgBoxHelpButton16384Agrega
el botón Ayuda al cuadro de mensaje.
VbMsgBoxSetForeground65536Especifica
la ventana del cuadro de mensaje como la ventana de primer plano.
VbMsgBoxRight524288El
texto se alinea a la derecha.
VbMsgBoxRtlReading1048576Especifica
que el texto debe aparecer para ser leído de derecha a izquierda en sistemas
hebreo y árabe.
Cabe aclarar que el grupo de valores de 0 a 5 describen el número  y tipo de botón mostrado en el MsgBox; el segúndo  grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botón predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman números para obtener el valor final del argumento buttons, se utiliza solamente un número de cada grupo.
A los fines de asignar el valor de un msgbox a una variable es preciso saber que valor devuelve cada uno de los botones de dicho cuadro de diálogo, estos valores se especifican en la table siguiente, recomiendo  leer con detenimiento, ya que en forma muy asidua se recurre a ellos:

MASTERCARD PAYONEER

ConstanteValorDescripción
vbOK1Aceptar
vbCancel2Cancelar
vbAbort3Anular
vbRetry4Reintentar
vbIgnore5Ignorar
vbYes6
vbNo7No

Si ha proporcionado helpfile como así también context, presionando F1 se obtiene el tema de ayuda correspondiente, de igual forma presionando la tecla ESC y si el MsgBox tiene  un botón cancelar, tendrá el mismo efecto que hacer click en dicho botón.
Aclaremos un poco más, el tema cuando se desea  saltar a la próxima línea, para ello usamos vbCrLf o chr (10) un ejemplo de ello sería
«El nivel de stock se encuentra en estado critico» &  chr(10) & «se sugiere su reposición inmediata»
En este ejemplo lo  que va a suceder es que al agregar chr(10), va  a aparecer en dos líneas de texto como lo muestra la imagen de la derecha.
Los ejemplos que se muestran a continuación son los más comunes, primero tenemos un MsgBox simple donde se muestra un texto solamente, no colocándose botones, por ende tomo por defecto el botón vbOkOnly; luego un MsgBox  donde se muestra un texto  y se concatena con el valor de una celda y posteriormente tenemos un MsgBox  cuyo valor se asigna a una variable y por último un ejemplo de MsgBox donde se asigna a una variable y se tiene varias líneas de texto. En el link del final podrás acceder a un archivo de ejemplo con varios msgbox, te recomiendo que veas su funcionamiento.

Una explicación más detallada y gráfica de la macro presentada se muestra en el vídeo que se muestra seguidamente, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo Como cerrar libro dependiendo de fecha de caducidadbuscar en listbox mientras escribes en textboxComo conectar Excel con Word crear archivo e insertar textoComo crear un autonumerico en Excel y muchos ejemplos más.


1) Msgbox «Los datos fueron guardados con éxito»
2) Msgbox «El número de registros es» &  cells(1,1) 
3) MiVariable = Msgbox(«El número de registros supera el máximo establecido», VbOKCancel, «Cantidad  de Registros»)
En este caso depende del botón que el usuario seleccione, devolverá los valores establecidos más arriba, pudiendo utilizarlo para hacer  o no cierto procedimiento como por ejemplo, si el usuario hace click en OK, entonces la macro guardará en la celda A1 la palabra «Enero», en caso que haga click en otro botón entonces terminará el proceso con Exit Sub:
If mivariable = 1   Then
Sheets(«hoja1»).cells(1,1)= «Enero»
Else
Exit sub
End If
4) MiVariable = Msgbox(«El número de registros supera» & Chr(10) & «el máximo establecido»  & Chr(10) & _
«Desea igualmente grabar los registros?», vbInformation + VbOKCancel, «Cantidad  de Registros»)
If mivariable = 1   Then
MsgBox «Los registros se grabaron con éxito»
Else
MsgBox «Se descartarán los registros»
End If

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends