Como cambiar el valor de un caption.label según una matriz, usando como filtro un textbox. Gracias

Hola, de antemano muchas gracias , expongo mi problema, tengo un formulario para enviar datos a una base , pero necesito que al ingresar un valor en un textbox que representa al id de un proveedor y darle a intro este busque ese valor en una matriz y devuelva el valor de la segunda celda donde encontró el valor en una label, para poder verificar que el valor existe dentro de la base de datos, y de no existir poder agregarlo a través de otro formulario. En resumidas cuentas algo semejante a la función buscarv

desde ya muy agradecido

1 Respuesta

Respuesta
1

Puedes usar la función range. Find()

Te envío una hoja con el funcionamiento. Aunque el filtro esta en la hoja, aplica exactamente igual para un userform. Solo seria en el evento change del filtro. Y en vez de target seria filtro.value.

http://sdrv.ms/17VKbOV

Private Sub Worksheet_Change(ByVal Target As Range)
Filtro1 = "E2" 'celda donde se encuentra el filtro
Hipervinculo1 = "F2" 'celda donde se colocara el hipervínculo encontrado
Columna1 = "A:A" 'Columna donde se encuentra los datos a buscar
NColumna1 = 1 'Numero de columnas a la derecha donde se encuentra el hipervínculo a devolver
If Application.Intersect(Target, Target.Parent.Range(Filtro1)) Is Nothing Then Exit Sub
Set busca = Range(Columna1).Find(Target.Value)
busca.Offset(0, NColumna1).Copy Range(Hipervinculo1)
End Sub

Si tienes dudas avisame!

Gracias Kimari23, la verdad vi tu archivo y me parece excelente la función, pero no comprendí como llevarla a mi proyecto dentro de mi formulario. para ver si me logro explicar un poco mejor adjunto el archivo y una explicación mas detalla en el de lo que quiero lograr.

a ver si me logras llevar a buen puerto.

<a>http://sdrv.ms/Zqk8My</a>

gracias

No se que ocurre, pero el libro me llega sin macros. envíamelo a [email protected]

Le di solución a tu problema como te conté, con la función Find. Y en el evento BeforeUpdate del textbox

http://sdrv.ms/153b4l7

Private Sub TextBox11_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
 Columna1 = "A:A" 'Columna donde se encuentra los datos a buscar
 NColumna1 = 1 'Numero de columnas a la derecha donde se encuentra el valor a devolver
 Set busca = Worksheets("dbprov").Range(Columna1).Find(What:=TextBox11.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
 If busca Is Nothing Then
 Label25.Caption = "Codigo inexistente"
 Cancel = True
 Exit Sub
 End If
 Label25.Caption = busca.Offset(0, NColumna1).Value
End Sub

Donde:

What:=Es es valor buscado

LookIn:=Es el tipo de dato ya sea valor, formula o comentario

LookAt:=Si es con concordancia completa o solo parte del código

MatchCase:=Si se tiene en cuenta o no las mayúsculas

Si no lo encuentra el label quedara con la frase "código inexistente"

Y el parámetro Cancel, provoca que el foco del textbox continué en el mismo textbox.

Si tienes alguna duda, me preguntas. Hasta la próxima, no se te olvide dar por finalizada la pregunta

Gracias, no pude descargar el archivo pero copiando el código pude solucionar, y pude avanzar bastante en el código ahora puedo agregar nuevos proveedores directamente desde el formulario principal y estoy pensando en algunas mejoras mas. un abrazo a la distancia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas