En esta lección vas a aprender a crear ventanas emergentes con avisos, errores, resultados…todo ello haciendo uso de la función msgbox en VBA. Además, os enseñaré otros usos de esta función que nos pueden ser de gran utilidad. ¡Empezamos!
La sintaxis de la función es la siguiente:
Msgbox Prompt, Buttons, Title, HelpFile, Context
- Prompt: Es el mensaje que aparecerá dentro del cuadro de diálogo.
- Buttons: Código de la siguiente tabla mediante el cual elegiremos el número y tipo de botones que queremos que aparezcan en nuestro cuadro de diálogo.
- Title: Título del cuadro de diálogo.
- HelpFile: Ubicación del archivo de ayuda asociado al cuadro de diálogo. Si se especifica este argumento, debe indicarse también Context.
- Context: Valor numérico asignado por el autor al tema de ayuda. Si se especifica este argumento, debe indicarse también HelpFile.
En la mayoría de los casos, simplemente querremos que aparezca una frase de aviso o el resultado de una operación en el cuadro de diálogo, como por ejemplo “Operación incorrecta”. Para esto, escribiríamos:
Pero su uso va más allá de mostrar simplemente un aviso o un resultado. Son comúnmente usados por programadores para detectar fallos en códigos extensos. Intercalando msgbox en el código VBA, puedes ir viendo en qué parte del programa te encuentras, si hay algún fallo en un condicional, en un cálculo, etc…
Vamos a ver ejemplos de todo esto para familiarizarnos con esta función que tanto nos va a ayudar de aquí en adelante.
Para empezar, creamos un libro en blanco, abrimos el editor VBA e insertamos 5 módulos. Copia las siguientes macros en ellos.
Macro 1. Mostrar una ventana de texto usando msgbox.
'Macro que muestra una ventana con el texto "Esto es una prueba"
'Mostramos cuadro de diálogo
MsgBox "Esto es una prueba"
End Sub
Macro 2. Mostrar una ventana de texto con título usando msgbox.
'Macro que muestra una ventana con el texto "Esto es una prueba" y con título "Aviso"
'Mostramos cuadro de diálogo
MsgBox "Esto es una prueba", , "Aviso"
End Sub
Macro 3. Mostrar el resultado de una operación en una ventana de texto usando msgbox.
'Macro que muestra ventana con el resultado de operación matemática y título "Operación matemática"
'Guardamos en la variable resultado el valor de la celda F4
resultado = Cells(4, "F").Value
'Mostramos cuadro de diálogo
MsgBox "El resultado es " & resultado, , "Aviso"
End Sub
Macro 4. Mostrar ventana de texto con opciones Sí/No.
'Macro que muestra una ventana con titulo "Advertencia", con texto "¿Borrar celdas C4 y D4?" y los botones de opciones Si y No junto con el icono de mensaje de advertencia
'Guardamos en la variable eleccion, la opcion elegida (Yes o No)
eleccion = MsgBox("¿Borrar celdas C4 y D4?", vbYesNo + vbExclamation, "Advertencia")
Select Case eleccion
'Si la eleccion ha sido Yes, entonces
Case vbYes:
'Borramos las celdas C4 y D4
Range("C4:D4").ClearContents
End Select
End Sub
Rellena la hoja de cálculo tal y como se muestra en la figura y crea 4 botones para asociarle las macros anteriores.
Aquí te dejo dos enlaces donde explico cómo configurar Microsoft Excel para el uso de macros y cómo asignar macros a botones, por si te interesan.
Ejecuta la primera macro, verás como aparece el cuadro de diálogo con el mensaje de texto “Esto es una prueba”. Como no hemos seleccionado un título para el cuadro de diálogo, por defecto, nos aparece “Microsoft Excel”.
La segunda macro lanza un cuadro de diálogo con el mismo texto que el anterior, pero con el título “Aviso”.
La tercera macro va a crear un cuadro de diálogo con el resultado de la celda F4, que no es más que la suma de C4 y D4. Podemos jugar con los valores de C4 y D4 y ver cómo cambia el resultado en el cuadro de diálogo al lanzar esta tercera macro.
La cuarta macro da un pasito más, y exprime la función msgbox al máximo. Partiendo de la tabla mostrada al comienzo de esta lección, vamos a crear un cuadro de diálogo con dos botones Yes/No (vbYesNo), con el icono de advertencia (vbExclamation) y con el título “Advertencia”. Este cuadro de diálogo nos va a dar la opción de borrar el contenido de las celdas C4 Y D4.
Si elegimos la opción Sí, se borrarán los números almacenados en C4 y D4 y el resultado de la suma será 0.
Al principio de la lección comentaba que la función msgbox se utilizaba también en VBA para localizar fallos de programación intercalándolas en el código a modo de guía para saber por dónde va discurriendo el programa. Esto os lo mostraré más adelante cuando vayamos desarrollando códigos más largos y complejos.
Con esto llegamos al final de la decimocuarta lección, en la que has aprendido a usar la función msgbox en VBA.
Espero que te esté gustando el curso. Si quieres, puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Nos vemos en el próximo capítulo.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
« L13. Condicionales en macros (2).
L15. Buscar un valor en una columna Excel (Find). »
0 comentarios