Uso de Vlookup en Textbox de Userform.

07/07/2006 - 11:09 por mk | Informe spam
Aquí estoy otra vez dando la paliza...

Estoy con un Userform que entre otros tiene dos Textbox (TxtReferencia,
TxtArticulo) y lo que quiero conseguir es que al introducir la
referencia de un artículo en uno de ellos automaticamente aparezca el
nombre en el otro.

Tengo una hoja en el libro donde he puesto una matriz con todas las
referencias y nombres de los artículos ("Matriz").

El código que estoy utilizando es el siguiente:

Private Sub TxtReferencia_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo EH
TxtArticulo.Value = Application.VLookup(TxtReferencia.Value,
Sheets("Matriz").Range("E2:F2000"), 2, 0)
Exit Sub
EH:
If TxtReferencia.Value = "" Then
TxtArticulo.Value = ""
Exit Sub
Else
TxtArticulo.Value = ""
MsgBox TxtReferencia.Value & " Referencia no encontrada"
End If
End Sub

Cuando cargo el formulario e introduzco el valor de la referencia
siempre me aparece el MsgBox, ¿alguna idea?.

Muchísimas gracias desde ya!.

Mk.

Preguntas similare

Leer las respuestas

#1 KL
07/07/2006 - 20:23 | Informe spam
Hola mk,

A ver esto:

Private Sub TxtReferencia_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TxtReferencia = "" Then
TxtArticulo = "": Exit Sub
End If
On Error GoTo EH
TxtArticulo = Application.VLookup(TxtReferencia,
Sheets("Matriz").Range("E2:F2000"), 2, 0)
Exit Sub
EH:
MsgBox TxtReferencia & " Referencia no encontrada"
TxtArticulo = "": TxtReferencia = "": Cancel = True
End Sub


Saludos,
KL



"mk" wrote in message
news:
Aquí estoy otra vez dando la paliza...

Estoy con un Userform que entre otros tiene dos Textbox (TxtReferencia,
TxtArticulo) y lo que quiero conseguir es que al introducir la referencia
de un artículo en uno de ellos automaticamente aparezca el nombre en el
otro.

Tengo una hoja en el libro donde he puesto una matriz con todas las
referencias y nombres de los artículos ("Matriz").

El código que estoy utilizando es el siguiente:

Private Sub TxtReferencia_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo EH
TxtArticulo.Value = Application.VLookup(TxtReferencia.Value,
Sheets("Matriz").Range("E2:F2000"), 2, 0)
Exit Sub
EH:
If TxtReferencia.Value = "" Then
TxtArticulo.Value = ""
Exit Sub
Else
TxtArticulo.Value = ""
MsgBox TxtReferencia.Value & " Referencia no encontrada"
End If
End Sub

Cuando cargo el formulario e introduzco el valor de la referencia siempre
me aparece el MsgBox, ¿alguna idea?.

Muchísimas gracias desde ya!.

Mk.
Respuesta Responder a este mensaje
#2 mk
08/07/2006 - 12:47 | Informe spam
KL escribió:
Hola mk,

A ver esto:

Private Sub TxtReferencia_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TxtReferencia = "" Then
TxtArticulo = "": Exit Sub
End If
On Error GoTo EH
TxtArticulo = Application.VLookup(TxtReferencia,
Sheets("Matriz").Range("E2:F2000"), 2, 0)
Exit Sub
EH:
MsgBox TxtReferencia & " Referencia no encontrada"
TxtArticulo = "": TxtReferencia = "": Cancel = True
End Sub


Saludos,
KL



Hola Kl, gracias por contestar.

No funciona y no lo entiendo, he probado con varias referencias y el
resultado siempre es el mismo, me aparece el msgbox con el mensaje
"Referencia no encontrada".

Le daré mas vueltas a ver si hay suerte.

Un saludo.

Mk.
Respuesta Responder a este mensaje
#3 KL
08/07/2006 - 13:12 | Informe spam
Hola mk,

No funciona y no lo entiendo, he probado con varias referencias y el
resultado siempre es el mismo, me aparece el msgbox con el mensaje
"Referencia no encontrada".



Seguramente el problema esta en una de tres:

- tu tabla de referencia en la que buscas los valores (el valor buscado no
es exactamente el que esta en la tabla aunque visualmente lo parezca o el
nombre de hoja o rango es incorrecto)
- los nombres de los TextBox no son correctos
- al enviar el codigo por Internet se ha roto una de las lineas del codigo
(menos probable ya que creo antes saltaria el error de compilacion):

TxtArticulo = Application.VLookup(TxtReferencia,
Sheets("Matriz").Range("E2:F2000"), 2, 0)

en este caso caso sustituye lo anterior por

TxtArticulo = Application.VLookup( _
TxtReferencia, Sheets("Matriz"). _
Range("E2:F2000"), 2, 0)

Para hacer el diagnostico mas concreto haran falta bastantes mas detalles o
el archivo. A mi el codigo funcionaba sin problemas durante las pruebas.

Saludos,
KL
Respuesta Responder a este mensaje
#4 mk
08/07/2006 - 14:09 | Informe spam
Hola kl!

Gracias por tu ayuda. He cambiado la matriz y he dejado solo dos
columnas con los datos que me interesan.

He revisado de nuevo el código y el nombre de la matriz y los de los
TextBox son correctos.

He logrado mi objetivo cambiando el código (ahora mas lento y mas
completo) pero me tomo la libertad de pasarte el fichero por correo para
que le eches un vistazo.

Te comento otro pequeño escollo que no logro superar, en el TextBox de
la fecha se carga correctamente el valor pero soy incapaz de volcarlo a
la matriz, ¿alguna idea?

Muchas gracias.

Mk.
Respuesta Responder a este mensaje
#5 KL
08/07/2006 - 16:02 | Informe spam
Hola mk,

Tal como te habia comentado en mi mensaje anterior el problema estaba en el
punto 1: el valor de txtReferencia es siempre texto mientras que la columna
[A] de la tabla matriz contiene valores numericos. Prueba sustituir el
codigo que te propuse antes por el siguiente:

Private Sub TxtReferencia_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TxtReferencia = "" Then
TxtArticulo = "": Exit Sub
End If
On Error GoTo AB
TxtArticulo = Application.VLookup(Val(TxtReferencia),
Sheets("Matriz").Range("A2:B12000"), 2, 0)
Exit Sub
AB:
MsgBox TxtReferencia & " Referencia no encontrada"
TxtArticulo = "": TxtReferencia = "": Cancel = True
End Sub

Respecto al problema de la fecha - es exactamente el mismo que lo de arriba.
Un textbox no almacena fechas ni numeros, sino cadenas de texto. Antes de
volvar el valor de un textbox en tu matriz tendras que convertirlo en el
tipo de datos correcto. P.ej.:

DateValue(TxtFecha)

Saludos,
KL


"mk" wrote in message
news:
Hola kl!

Gracias por tu ayuda. He cambiado la matriz y he dejado solo dos columnas
con los datos que me interesan.

He revisado de nuevo el código y el nombre de la matriz y los de los
TextBox son correctos.

He logrado mi objetivo cambiando el código (ahora mas lento y mas
completo) pero me tomo la libertad de pasarte el fichero por correo para
que le eches un vistazo.

Te comento otro pequeño escollo que no logro superar, en el TextBox de la
fecha se carga correctamente el valor pero soy incapaz de volcarlo a la
matriz, ¿alguna idea?

Muchas gracias.

Mk.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida