Buscar valor en excel para Textbox Formulario VBA

Tengo un formulario y dentro de él tengo varios textbox, necesito que cuando en el textbox1 se ingrese un numero, busque ese numero en una tabla que tengo en excel y arroje el valor de la segunda fila en el textbox2. He tratado colocando lo siguiente:

Private Sub textbox1_afterupdate()

textbox2.value="=+VLOOKUP(textbox1.VALUE,DATA!C6:C8,2,0)"

end sub

Pero me arroja error, pls su ayuda.

3 respuestas

Respuesta
11

¿Quieres qué te arroje el valor de la segunda fila o de la segunda columna?

¿Puedes poner una imagen de cómo tienes los datos y poner un ejemplo del valor que esperas en el textbox2?

Tratare de ser mas explicita, lo que tengo en excel es algo como esto:

COLUMNA A   COLUMNA B

"A"                   LIMA

"B"                   MIRAFLORES

"C"                  MAGDALENA

.......                .........

Entonces el textbox 1 es donde el cliente ingresa una letra (de la A a la Z) y de acuerdo a ello en el textbox2 debe salir el valor de la columnB, por ejemplo si textbox1 es "A" entonces el textbox2 debe decir "LIMA".

Necesito que sea algo similar al BUSCARV, porque son más de 10000 registros, sólo les he colocado un ejemplo.

Espero su pronta ayuda.

Ahora sí está más claro.

Pon el siguiente código en tu formulario, cambia "Hoja1", por el nombre de tu hoja.

Private Sub TextBox1_AfterUpdate()
'Por.Dante Amor
    Set h = Sheets("Hoja1")
    Set b = h.Columns("A").Find(TextBox1)
    If Not b Is Nothing Then
        TextBox2 = h.Cells(b.Row, "B")
    End If
End Sub

Para que funcione, tienes que capturar la letra en el texbox1 y presionar enter o tab.

Saludos. Dante Amor

No olvides valorar la respuesta.

¿Si la búsqueda de la información que necesito ahora estuviera en la columna "C" basta con cambiar "B" por "C"? Lo he intentado pero me sale:

"Se ha producido el error "6" en tiempo de ejecución:

Desbordamiento"

¿Hay algo adicional que me falte colocar?

Es correcto, así quedaría:

Private Sub TextBox1_AfterUpdate()
'Por.Dante Amor
    Set h = Sheets("Hoja1")
    Set b = h.Columns("A").Find(TextBox1)
    If Not b Is Nothing Then
        TextBox2 = h.Cells(b.Row, "C")
    End If
End Sub

Tanto la macro anterior como esta macro, me funcionan.

Si tienes problemas tendría que revisar cómo están tus datos o qué más le cambiaste a la macro.

Realiza la prueba con algo sencillo, como esto:

Respuesta
3

Si utilizas VlookUp seguramente necesitas que te devuelva el valor de otra col. Si indicas el 2 como argumento entonces necesitas de la 2da col a partir de C...

Escribila así entonces indicando en el rango 2 columnas (C6:D8).

Si no es así aclarame estos detalles.

textbox2.value="=+VLOOKUP(textbox1.VALUE,DATA!C6:D8,2,0)"

Estimada Carmela:

Hemos intentado 'interpretar' tu consulta dejándote lo mejor que consideramos según tus palabras o notas. Si no ha sido fielmente interpretado, quizás por falta de más detalles, no nos merecemos un voto negativo... hemos puesto nuestro interés en ayudarte.

Puedes aclarar y continuar la consulta con el experto que desees y a los demás ignorarlos... pero de allí a votarlos negativamente ya supera la mínima educación que se espera de alguien.

Sdos!

Gracias por su ayuda, ya anteriormente había contado con su apoyo sin embargo es cierto que su respuesta no cubrió mis expectativas y tenia entendido que debía votar siempre ya sea en positivo o negativo a todas las rptas que recibiera. Disculpe si le incomoda mi voto y espero contar con su ayuda en una próxima oportunidad.

slds

Respuesta

La función buscar te devolverá solo la primera coincidencia dentro de la serie... eso quiere decir que solo te sirve si existe solo una única vez ese valor buscado...

Así es, existe sólo una vez ese valor pero no está funcionando cuando lo coloco en el formulario, me sale:

Error de compilación

No se encontró el método o el dato miembro

Esa función devuelve el valor que se encuentre a la derecha del valor buscado, tantas columnas como indiques en su argumento... en tu formula veo que como rango de búsqueda pones solo una columna C6:C8 por lo cual falla... la tabla de búsqueda debe contener a lo menos 2 columnas... una en donde se busca el valor y la otra la que contiene el valor a devolver como resultado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas