Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Función InputBox en VBA

| 51 comentarios

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

Inputbox en VBA

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. 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

Ejecutamos la macro y registramos los nombres de la siguiente manera:

2.1. Ejecutando la macro

1 300x141 Función InputBox en VBA

(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

2 300x201 Función InputBox en VBA

(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.

12 300x153 Función InputBox en VBA

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.

14 1 300x113 Función InputBox en VBA

Ejemplo elaborado por: Sara Ramos

Descargar Ejemplo: Ejemplo Inputbox en VBA

 

51 comentarios

  1. 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

  2. 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.

    • 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

  3. 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.

  4. 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

  5. ¿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!!!

  6. 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.

  7. 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.

Página de comentarios 3 de 3
1 2 3

Deja una respuesta

Los campos requeridos estan marcados con *.