En el artículo anterior sobre los MsgBox vimos como construirlos y diseñamos algunos en su forma más simple.
En esta ocasión vamos a mejorar nuestros MsgBox añadiéndoe interacción con el usuario. Por ejemplo, tenemos un botón para enviarle un email, no vamos a entrar aquí en como se envía el email, pero intentando informar al usuario de lo que estamos haciendo nos vamos a cerciorar de que es eso lo que realmente quiere hacer así que le mostraremos un MsgBox preguntando “¿Realmente quiere enviar el email?”. En este caso el MsgBox tendrá dos botones “Si” o “No” y en función de lo que pulse el usuario enviaremos el email o simplemente cerraremos el mensaje sin hacer nada.
Primero vamos a ver como contruir el MsgBox y a continuación como tomar la decisión:
Como puedes observar ahora, donde antes sólo usábamos una opción, hemos combinado tres de ellas:
- vbYesNo: Mostraremos dos botones “Si” y “no”
- vbQuestion: El icono será el de interrogación
- vbDefaultButton1: de los dos botones, el primero de ellos “Si” será el que esté seleccionado por defecto al abrir el MsgBox. Esto permitirá, con solo pulsar intro, aceptar el mensaje.
La toma de decisiones la vamos a realizar a través de un SELECT CASE al que le vamos a pasar el botón que hemos pulsado en nuestro MsgBox. Esto quiere decir que, al llamar al MsgBox dentro de un SELECT CASE, en cuanto pulsemos “Si” (vbYes) o “No” (vbNo) y se cierre el MsgBox, nuestro SELECT CASE tomará el valor del botón pulsado.
Como se puede observar al cerrar el MsgBox, si hemos pulsado “Si” el propio MsgBox devolverá “vbYes” que nosotros capturamos y ejecutaremos el código que creamos oportuno.
Si en vez de poner “Si o No” queremos mostrar “Aceptar” o “Cancelar” sustituiríamos “vbYesNo” por “vbOKCancel” en la construcción del MsgBox y el efecto sería:
Y en el SELECT CASE tendríamos que sustituir “vbYes” por “vbOK” y el “vbNo” por “vbCancel” para que pueda capturar el botón pulsado.
Otro ejemplo, supongamos que estamos mandando el email y a mitad del proceso tenemos un error y no se puede enviar, podríamos informar al usuario con un MsgBox de que ha ocurrido un error y darle la opción de Anular todo el proceso, Reintentar enviarlo de nuevo o Ignorar el error y seguir la ejecución del programa:
Como se puede observar hemos cambiado el icono del MsgBox para que sea más representativo de que ha ocurrido un error y hemos añadido un tercer botón.
Se puede observar también que hemos insertado un salto de línea para hacerlo más legible lo que hemos hecho con & vbCrLf &
En este caso, según el botón que pulsemos, el MsgBox devolverá:
- vbAbort
- vbRetry
- vbIgnore
Con esto quedan cubiertas la mayoría de las acciones que podemos realizar sobre un MsgBox. Así que ya sabes, ya no tienes escusa para no informar al usuario y mucho menos para no iteractuar con él.
Anímate a probarlo que es muy fácil.
Excelente contenido! Gracias