Resumen

Cuando necesitas que el usuario proporcione información directamente dentro de una macro de Excel, el InputBox se convierte en tu mejor aliado. Esta herramienta permite crear ventanas emergentes que solicitan datos específicos, los almacenan en variables y los utilizan para ejecutar operaciones de forma dinámica, algo especialmente valioso en subrutinas donde no existen argumentos de entrada.

¿Qué es InputBox y cómo funciona en VBA?

El InputBox es una instrucción de Visual Basic for Applications que genera una ventana emergente donde el usuario puede escribir un valor. A diferencia del MessageBox, que solo muestra información, el InputBox recibe datos de entrada y los devuelve al código para ser procesados [01:06].

Al escribir InputBox() y abrir paréntesis, VBA muestra los argumentos disponibles:

  • Prompt: el texto que aparece en la ventana, por ejemplo "Escribe el numerador".
  • Title: el título de la ventana (opcional; si no se especifica, aparece "Microsoft Excel" por defecto).
  • Los argumentos entre corchetes son opcionales, y VBA asigna valores default cuando no se definen [01:52].

¿Por qué es necesario asignar el resultado a una variable?

Un detalle fundamental es que el valor que ingresa el usuario debe almacenarse en una variable. Si solo escribes InputBox("Escribe el numerador") sin asignarlo, el dato se pierde y no podrás utilizarlo en ninguna operación posterior [02:17].

La forma correcta es declarar primero la variable con Dim y luego asignarle el resultado:

vb Dim numerador As Integer numerador = InputBox("Escribe el numerador")

De esta manera, la información proporcionada por el usuario queda disponible para cualquier cálculo dentro de la función o subrutina.

¿Cómo combinar InputBox con funciones y subrutinas?

En una función, ya se pueden recibir argumentos directamente. Sin embargo, el InputBox permite solicitar datos adicionales que no fueron definidos como parámetros. En el ejemplo de la clase, la función Div recibe el denominador como argumento y pide el numerador mediante InputBox [02:44].

Al ejecutar Div(3) desde la ventana de inmediato, aparece la ventana emergente solicitando el numerador. Al escribir 12 y presionar OK, el resultado de la división se muestra con un MessageBox [03:08].

¿Por qué InputBox es esencial en las subrutinas?

Las subrutinas (Sub) no aceptan argumentos de entrada como las funciones. Por eso, cuando necesitas que el usuario proporcione información, el InputBox es la única vía para obtener esos datos [03:30].

El ejemplo completo de una subrutina con InputBox luce así:

vb Public Sub DivS() Dim num As Integer Dim den As Integer

num = InputBox("Numerador", "División") den = InputBox("Denominador", "División") Dim a a = MsgBox(num / den, , "División")

End Sub

Al ejecutar esta subrutina [04:48], aparecen dos ventanas consecutivas: una para el numerador y otra para el denominador. Después, un MessageBox muestra el resultado de la operación.

¿Qué es el tipo de dato Variant y cuándo se usa?

Cuando declaras una variable con Dim sin especificar el tipo de dato con As, VBA la define automáticamente como Variant [03:58]. Este tipo acepta cualquier valor: números, texto o fechas. Aunque es flexible, lo recomendable es especificar el tipo (como As Integer) para que el código sea más eficiente y predecible.

Otro concepto importante es el uso de una variable genérica para almacenar el resultado de un MsgBox cuando se incluyen argumentos adicionales. En el ejemplo, la variable a cumple esa función sin necesidad de ser utilizada después [05:02].

¿Cómo practicar con InputBox?

Para reforzar lo aprendido, considera estos pasos:

  • Crea una subrutina que pida dos números con InputBox.
  • Realiza una operación matemática con esos valores.
  • Devuelve el resultado al usuario con un MsgBox que incluya un título descriptivo.

Comparte una captura de pantalla de tu código en los comentarios y cuéntanos qué operación elegiste implementar.

      Input Box en Visual Basic: Solicitar Datos al Usuario