Comunicarse con el usuario: MsgBox e InputBox
Objetivo del capítulo
A fin de equiparle mejor para comunicarse con los usuarios sin tener que escribir cientos de líneas de código, descubrirá en este capítulo las funciones MsgBox e InputBox. Mostrar mensajes a los usuarios puede servir para varios propósitos, como darles la bienvenida o informarles sobre el proceso de su programa, pero también advertirles de los pasos críticos.
Así, en este capítulo, se repasará la función MsgBox, con los botones e iconos que puede añadir a sus cuadros de diálogo, y la función InputBox, con las diferentes opciones de que dispone cuando quiere interactuar de forma más específica con sus usuarios.
Al final del capítulo, encontrará una serie de ejercicios para entrenarse en adaptar mejor su comunicación a través de las herramientas VBA.
Mostrar un mensaje al usuario: MsgBox
Independientemente del lenguaje informático, siempre es importante mostrar la información al usuario y obtener una confirmación o afirmación por su parte. En VBA, esta función de visualización de mensajes se llama MsgBox, que se pronuncia «Message Box» (mesaʒ boks).
![images/cap05_img_01.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap05_img_01.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
La función MsgBox es probablemente la más utilizada de las disponibles en VBA. Es importante saber cómo escribirla, pero también las opciones que se le ofrecen al utilizarla.
Usar MsgBox para un despliegue básico
Después de añadir un módulo en el que pueda escribir su código, comience escribiendo estas pocas líneas:
Sub Hola()
'Mostrar Hola al usuario
End Sub
Ejemplo 1: escribiendo una primera macro
Las palabras clave Sub y End Sub se tratarán en el capítulo Procedimientos, funciones y macros. Por el momento su código no contiene más que un comentario. Si ejecuta la macro, no pasará nada.
Para mostrar «Buenos días» al usuario, basta con añadir la siguiente sentencia para obtener el siguiente código completo:
Sub Hola()
'Mostrar Hola al usuario
MsgBox "Hola"
End Sub
Ejemplo 2: llamando a la función MsgBox
Ejecute la macro; deberá ver en su pantalla el siguiente mensaje:
![images/05OSTHS01.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/05OSTHS01.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Enhorabuena, ¡ha escrito y ejecutado su primera macro! Siga ahora para descubrir cómo mejorarlo.
Propiedades y sintaxis general del cuadro de diálogo MsgBox
Cuando quiera mostrar un mensaje, deberá escribir la función MsgBox, seguida del texto que quiera mostrar. El texto va entre comillas.
De forma predefinida, la ventana muestra un único botón Aceptar y tiene el título Microsoft Excel.
Las cuatro partes que le interesarán en los próximos párrafos se muestran en la siguiente imagen.
![images/cap05_img_03.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap05_img_03.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
El texto es la información principal que aparece en el cuadro de diálogo (1). A continuación, tiene uno o varios botones en la parte inferior de la caja (2). En la parte superior de la caja está el título (3). Por último, a la izquierda del texto puede ver lo que se llama un icono (4).
Usted puede manipular cada una de estas propiedades a su conveniencia, a través de la llamada...
Pedir información al usuario: Application.InputBox
Cuando hacer clic en un botón ya no es una opción suficientemente útil para su programa, debe utilizar otros medios. Ya sea que se trate de un texto, un valor numérico o de una celda de Excel que se ha de suministrar, la función InputBox es una valiosa herramienta a su disposición.
Application.InputBox o VBA.InputBox
Una peculiaridad que puede confundirle en su proceso de aprendizaje es que hay dos funciones llamadas InputBox en VBA. Ambas tienen el mismo propósito: mostrar un cuadro de diálogo para solicitar información al usuario. Se puede considerar que ambas tienen las mismas propiedades y parámetros, con la salvedad de que aquí se estudiará Application.InputBox, que permite una gestión aún más fina de los tipos de valores solicitados al usuario. En los siguientes capítulos descubrirá que aquí Application hace referencia a Excel. Además, Application.InputBox solo está disponible en Excel, mientras que InputBox únicamente estará accesible para otras aplicaciones de Office (Access, Word u Outlook, por nombrar algunas).
![images/cap05_img_19.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap05_img_19.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Ejemplo visual de la caja de diálogo InputBox
Otro punto, técnicamente hablando, Application.InputBox llama al método VBA.InputBox. Por último, tenga en cuenta, que, si utiliza InputBox sin especificar Application delante, la versión llamada será entonces VBA.InputBox.
Diálogo básico
Application.Inputbox es un cuadro de diálogo que le pide al usuario introducir información con el teclado o el ratón para poder utilizar esa información en el resto del programa.
He aquí...
Ejercicios
Con el fin de aprender mejor las diferentes posibilidades que ofrecen las funciones MsgBox y Application.InputBox, he aquí una serie de ejercicios. Aunque todavía no sabe cómo hacer programas elaborados, aquí intentará mostrar cuadros de diálogo respetando ciertas restricciones.
Comience por crear un módulo al que llamará Capítulo_05_Msgbox_InputBox.
Cada ejercicio puede realizarse por separado. Puede escribir su código entre las siguientes líneas:
Public Sub NumEjercicio()
'su código aquí
End Sub
A continuación, ejecute su programa a través de la cinta de opciones de Excel o colocando el cursor dentro de su programa y pulsando la tecla F5.
Las correcciones de los ejercicios se encuentran en el capítulo Correcciones de los ejercicios, y el archivo de corrección pueden descargarse desde la pestaña Material para descargar.
Función MsgBox
Hola a todo el mundo
En el interior de una estructura:
Public Sub HolaATodoElMundo()
End Sub
Escriba una instrucción que muestre al usuario, en un cuadro de diálogo, el texto simple «Hola a todo el mundo».
Ejecute el código para comprobar que obtiene el siguiente cuadro de diálogo:
![images/cap05_img_24.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap05_img_24.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Juego de botones
En el interior de una estructura:
Public Sub JuegoDeBotones() ...