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
27/01/2013 a las 8:29 pm
Esta macro me resulta importante para el llenado de bases de datos. Puede combinarse y repetirse tantas veces como se requiera para distintos rangos especificos.
17/02/2013 a las 6:16 pm
Se le podria incluir mas datos y ademas que te detecte si el dato registrado ya ha sido anhadido.Por ejemplo cuando se agregan nuevos clientes a una base de datos, se aolicita informacion basica como nombres, apellidos, documebto de identidad y datos de contacto.
24/03/2013 a las 6:03 pm
Al ejecutar esta macro resulta que se puede ingresar hasta cinco nombre distintos pero cuando vuelvo ha ejecutar la misma, esta sobreescribe los nombres ya existentes. Me podrian ayudar a perfeccionar este código para poder registrar y a su vez mantener los nombres escritos previamente y que pueda continuar en la siguiente fila en blanco? Me ayudaria mucho para los fines que persigo, gracias.
25/05/2013 a las 2:40 am
Modificando el ejemplo, he colocado un indicador para que corte el ingreso de nombres sin reemplazar los que ya se encuentran en las celdas cada vez que se ejecuta la macro.
Sub nombres()
Dim i As String
Range("A1").Select 'iniciamos en A1
'revisamos las celdas hasta encontrar la primera en blanco
Do While ActiveCell.Value ""
ActiveCell.Offset(1, 0).Activate
Loop
'iniciamos el llenado de nombres hasta que indiquemos con XXX que terminamos
Do
i = (InputBox("Ingrese el nombre (XXX=Fin)", "Nombre"))
If i "XXX" Then
ActiveCell.Value = i
ActiveCell.Offset(1, 0).Activate
End If
Loop While i "XXX"
End Sub
25/05/2013 a las 3:13 pm
muy importante para el ingreso de los datos ojo ,hay que tener cuidado con los tipos de datos pueden ser numerico,string .... saber que tipo de datos vas ingresar para hacer tus calculos
25/05/2013 a las 10:39 pm
Esta funciòn es muy importante para realizar grandes bases de datos en la cual nos facilitara tanto para introducir cada uno de los datos que podamos ingresar y utilizando la programacion VBA nos facilitara el trabajo, esta funcion InputBox en VBA es una especie de ventana donde el usuario digita informacion pero esa informacion digitada debe guardarse en un lugar en donde debemos declarar variables para que ahi se almacene la informacion que deseamos compartir en nuestra base de datos.
26/05/2013 a las 6:08 pm
Al ejecutar la macro me pide ingresar seis nombres a pesar de que se han seleccionado cinco celdas, eso es porque el ciclo for va de 0 al numero de celdas seleccionadas es decir 5 lo que es seis por tanto lo modifiqué para que pida solo cinco nombres, añadiendo -1 al límite del for, quedando:
Sub nombres()
Dim i As String
Dim a As Integer
Range("F1:F5").Select
For a = 0 To Selection.Cells.Count - 1
i = InputBox("Ingrese el nombre: ", "Nombres")
ActiveCell.Offset(a, 0).Value = i
Next a
End Sub
20/04/2014 a las 3:16 pm
mmm, Entonces si pongo for a=1, si saldrán sólo 5 valores. Interesante.
20/04/2014 a las 3:22 pm
Pero a partir de la segunda celda.
26/05/2013 a las 9:28 pm
Al código del ejemplo se añadio la líneas siguientes lineas dentro del bucle FOR:
+------------------------
If a = 4 Then
Exit For
End If
+-------------------------
La finalidad es para que sólo se ingresare 5 nombres según el rango eleccionado. El código completo es el siguiente:
+--------------------------------------
Sub Nombres()
Dim i As String
Dim a As Integer
Range("A1:A5").Select
For a = 0 To Selection.Cells.Count
i = InputBox("Ingese su Nombre: ", "Nombres")
ActiveCell.Offset(a, 0).Value = i
If a = 4 Then
Exit For
End If
Next a
End Sub
+----------------------------------------
26/05/2013 a las 11:34 pm
He realizado una modificación a la macro presentada, incorporando una validación solo númerica. Es útil para valores que el usuario debe ingresar y que sean únicamente números.
Este es el código:
Sub Valores()
Dim i As String
n = Worksheets("Hoja1").Range("a" & Worksheets("Hoja1").Rows.Count).End(xlUp).Row + 1
INPUT_I:
i = (InputBox("Ingrese el valor", "Valor"))
If Not IsNumeric(i) And i "" Then
MsgBox "INGRESE SOLO VALORES NÚMERICOS", vbInformation
GoTo INPUT_I
End If
Worksheets("Hoja1").Range("a" & n).Value = i
End Sub
27/05/2013 a las 8:05 pm
Estimados:
Bien, si se prueba el MsgBox y se pulsa el boton ayuda, salta la ayuda de office, esto me hace pensar que estoy haciendo algo mal y por eso no salta mi ayuda… necesito alguna respuesta:
Sub MessageBox()
MsgBox "El proceso tardará 5 minutos ¿Desea Continuar?", 3 + 256 + 16384, "Copia de Seguridad.", "C:\ejemplo.chm", 71
End Sub
11/07/2013 a las 12:20 pm
Definitivamente esta opción resulta practica para la creación de entornos visuales y botones.
14/07/2013 a las 9:56 pm
La función Inputbox es importante para el desarrollo de programas complejos, ya que permite enviar mensajes al usuario y a la vez almacenar información. Esta informacion permitira crear variables para un codigo complejo, por ejemplo al ser usada con la funcion InStrRev se podran realizar busquedas grandes o especificas, facilitando así el uso de las hojas de cálculo.
20/07/2013 a las 5:27 pm
Modifique en elago el codigo de Darío:
espero les sirva.
Sub Nuevo()
Dim i As String
Worksheets("Hoja1").Activate
ActiveSheet.Range("A1").Activate 'iniciamos en A1
'revisamos las celdas hasta encontrar la primera en blanco
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
'iniciamos el llenado de nombres hasta que indiquemos con XXX que terminamos
i = (InputBox("Ingrese el Nombre:", "Nombre"))
Do While i ""
With ActiveCell
ActiveCell.Value = i
ActiveCell.Offset(1, 0).Activate
End With
i = (InputBox("Ingrese el Nombre:", "Nombre"))
Loop
End Sub
21/07/2013 a las 11:05 am
Asignándole varias variables yo puedo crear con este macros bases de datos de mis alumnos, pero quisiera saber si hay una forma de restringir la información a ingresar, osea si se le puede poner una cantidad límite de letras en el nombre o algo así
04/08/2013 a las 7:33 pm
Esta función me ha ayudado para poder realizar una pequeña encuesta. Ademas esta función es el inicio para la toma de información para distintas base de datos.
08/09/2013 a las 10:49 am
En la macro se consideró que el rango de trabajo era desde la celda 1 hasta la fila 5. Sin embargo, al descagar el excel, esto aplicaba hasta la fila 6. A que se debe esto?
08/09/2013 a las 11:21 pm
El macro permite el ingreso de información de manera rápida, y la función nos recuerda a que corresponde la misma. Aun falta aprender el resto de parametros incluidos en el macros.
15/09/2013 a las 10:33 pm
También se puede usar para un mini censo. Esto lo usaron unos muchachos de mi empresa para obtener feedback sobre la snuevas politicas.
21/09/2013 a las 6:15 pm
Buen día amigos,
Excelente función para ingresar datos; es importante validarlos también. Por mi parte he modificado la fila donde se usa la función COUNT porque la macro no terminaba cuando ingresabas los 5 datos.
Para mejorar la
For a = 0 To Selection.Cells.Count - 1
Saludos
02/11/2013 a las 11:12 pm
esta función es realmente importante pues ayudará a que nosotros podamos guardar bases de datos es decir, que estas sean traspasadas desde el formulario al Excel automáticamente al ejecutar la macro.