Usamos la función InputBox de Excel para obtener la entrada del usuario. Es importante recordar incluir validaciones de datos correctos, esto asegurará que la entrada de datos correspondan con lo que el programa necesita.
Sintaxis del Inputbox en VBA
La función Inputbox presenta un mensaje al usuario, permitiéndole ingresar un valor en una caja de texto.
Los parámetros principales de esta función son:
Inputbox (Promt, Title, Default)
- El parámetro Prompt especifica la leyenda que mostrará la caja de mensajes.
- El parámetro Title especifica el título que llevará el cuadro de diálogo.
- El parámetro Default es el texto que mostrará la caja de texto (es opcional).
El aspecto más importante de InputBox es que nos devuelve una cadena con lo que haya ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica dependiendo del valor obtenido.
Veamos por ejemplo en la siguiente macro, en al que puede observar como se solicita un dato, donde "Ingrese cantidad" es la leyenda o prompt, y "Título" es el texto que se emplea como título, luego de anotar el valor, y presionar aceptar, el valor empleado es entregado a la variable "X"
Sub Test()
x = InputBox("Ingrese cantidad", "Título")
MsgBox x
End Sub
Sintaxis completa de Inputbox
lnputBox(prompt, title, default, left, top, helpfile, context, type)
Además de los tres elementos ya descritos, el Inputbox cuenta con:
left: es la distancia desde la parte izquierda de la pantalla.
top: es la distancia desde la parte superior de la pantalla.
helpfile, context: son datos opcionales, correspondiente al archivo de ayuda, no son de uso frecuente.
type: es opcional, sirve para identificar el tipo de dato a ser devuelto, los tipos datos pueden ser:
0: Una fórmula.
1: Un número.
2: Una cadena (texto).
4: Un valor lógico (Verdadero o Falso).
8: Una referencia de celda, como un objeto Range
16: Un valor de error, como #N/A.
64: Una matriz de valores
Por ejemplo si requerimos una referencia a una celda podríamos usar:
Private Sub ejemplo_inputbox()
Dim x As Range
Set x = Application.InputBox("Mensaje", "título", Type:=8)
x.Clear
x.Select
End Sub
Ejemplos de InputBox
Solicitar varios nombres usando Inputbox
A través del uso de la función InputBox, creamos una macro que nos permita registrar los nombres de las personas que consignaremos en la caja de información. 1º Creamos la macro:
Sub nombres()
Dim i As String
Dim a As Integer
Range("A1:A5").Select 'seleccionamos rango de trabajo
For a = 0 To Selection.Cells.Count 'realizar repeticiones para cada celda
i = (InputBox("Ingrese su nombre", "Nombre")) 'recuperamos las cadena del inputbox
ActiveCell.Offset(a, 0).Value = i 'bajamos por las celdas de la selección de 1 en 1
Next a
End Sub
2° Ejecutamos la macro y registramos los nombres de la siguiente manera:
2.1. Ejecutando la macro
(Para mayor visualización de la imagen, hacer click en la misma)
2.2. Digitar en la caja de texto los nombres a registrarse y luego aceptar
(Para mayor visualización de la imagen, hacer click en la misma)
Ejemplo elaborado por: Ricardo Najarro Chuchón
Descargar ejemplo: Función InputBox en VBA
Solicitar un nombre y colocarlo en una celda
A través del uso de la función InputBox, solicitaremos datos de los usuarios para que de esta manera accedan al programa. Para ello:
1° En la hoja de cálculo, insertaremos cuadros de texto Activex.
2° Hacemos doble click en el primer cuadro de texto y vamos cambiando los nombres en los respectivos caption. Asimismo introducimos la functión INPUTBOX para lograr que aparezca una caja de información solicitándonos datos personales:
Private Sub CommandButton1_Click()
Dim mensaje As String
Dim nombre As String
mensaje = "Por favor, escriba su nombre."
nombre = InputBox(mensaje)
Range("a2").Value = nombre
End Sub
3° Finalmente, probamos el resultado en la hoja de Excel.
Ejemplo elaborado por: Sara Ramos
Descargar Ejemplo: Ejemplo Inputbox en VBA
16/07/2015 a las 10:55 am
hola amigos muy interesante esta herramienta, soy un poco neofito en loque se debe a excel y sus funciones pero queria saber si se pueden expresar o digitar varias variables numericas
11/01/2016 a las 4:05 pm
Muy buena esta función de VBA. Tengo una inquietud: ¿Cómo queda el código para validar que no se ingresen datos repetidos o duplicados? ¿Cuáles líneas de código deben adicionarse? Estaré muy agradecido a quien me enseñe esto.
27/08/2020 a las 9:29 am
Muy buen aporte, alguien sabe cómo poder alternar inputbox, es decir, un ejemplo, ingresas el primer nombre y quiero que la edad esté en la celda adyacente pero que antes de pasar al siguiente nombre me ingresé primero la edad.
El orden de ingreso sería: nombre, edad, nombre2, edad2
04/03/2016 a las 5:04 am
Excelente tutorial. Me ha despejado algunas dudas, pero tengo un caso especial, espero podáis echarme una mano.
Deseo crear mis SKU (códigos internos de stock) en función a unas categorías, subcategorías y número de artículo, dicho de otro modo:
- Poder definir categorías, que por ejemplo sean desplegables y asignarles un valor. Por ejemplo categoría 1, valor 01.
- Lo mismo con subcategorías, subcategoría 1, valor 01
- Finalmente número del producto.
El cuadro tendría 4 columnas: categoría, subcategoría, número de producto, SKU.
Lo que deseo lograr es que el SKU sea de la forma:
01010001
01 = categoría
01 = subcategoría
0001 = número del producto.
¿Sería posible que se tomen estos valores sin que sean sumados, sino que sean una secuencia numérica en función a estos valores?
Gracias de antemano por vuestra ayuda.
10/03/2016 a las 2:48 pm
Buenas tardes.
He buscado y también leído sobre bastantes ejemplos de automatización de actividades, en mi trabajo me trace una meta pero no he podido encontrar la herramienta que me sirva para solucionar mi necesidad, Quisiera encontrar una guia o ver un ejemplo, para pegar el valor de una celda o un ComboBox o TextBox de un formulario teniendo en cuenta otras celdas u otros ComboBox o TextBox, a una celda especifica osea manejando tres variables, Hoja de destino, Ubicación en referencia Celda horizontal, Ubicación en referencia Celda Vertical.
Realmente necesito una ayuda con esta situación. y en esta pagina me he encontrado con maravillosas macros,
Muchas Gracias
06/08/2020 a las 4:55 pm
¿Cómo se hace para ofrecer disponibles los caracteres especiales como letras con tilde y eñes?
En realidad la duda me surgió con una macro de Power Point, ya que un alumnito extranjero tenia que escribir "HABLÁIS" en el textbox de la respuesta y no podía hacerlo desde su PC. (es una presentación con diapositivas de PP habilitada para macros).
No he encontrado aún la solución al problema y, a lo mejor, si me explicáis cómo se hace en Excel, yo puedo adaptarla a VB para Power Point.
Mil gracias!!!
20/10/2020 a las 8:51 pm
Buenas Noche me gusto mucho el ejemplo " Excelente", donde hay varios nombre para el InputBox. Estoy aprendiendo a usar Macros (novato), Necesito su ayuda, ya que tengo una instrucciones usando el InputBox para colocar Valores en distinta celdas. Le estoy enviando las instrucciones ,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Texto As String
If Not Application.Intersect(Target, Range("B5", "B8:B9", "D11")) Is Nothing Then
Texto = InputBox("Ingresar Montos" & Chr(13), "Montos")
ActiveSheet.Range("B5") = Texto And Range("B8") = Texto And Range("B9") = Texto And Range("D11") = Texto
End If
End Sub
Por favor como se haría en este caso, para darle el valor correspondiente a cada celda, sin importar la posición, ya que los valores se posiciona en una celda.
¿Como debería de Hacerse ?
Por favor se lo agradeceria.
18/01/2021 a las 4:25 pm
Buenas noches, gracias por compartir conocimientos con nosotros. Aprendí mucho a través de su sitio y estoy practicando y me encuentro con un problema. Por ejemplo, si quiero editar un nombre en un cuadro de texto de un userform, después de escribir una letra, mi cursor salta al final de la palabra, ¿qué puedo hacer para editarlo? Tengo seis cuadros de texto y lo hace con los seis. De antemano gracias.