Sintaxis para error en consulta de vba excel

Estimada comunidad, quisiera por favor una ayuda de como poder asignarle una sintaxis para cuando hago una consulta. Tengo un Form en donde realizo una consulta con un lector código de barras o escribo el dato directamente, todo funciona bien si ingreso el código a consultar esta en mi base de datos, pero si no esta me envía error y se saca de mi formulario.

Este es mi código de búsqueda;

Private Sub TextBox1_AfterUpdate()
Dim strDescripcion As String
With Application.WorksheetFunction
strDescripcion = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 1, 0)
Me.Label_Precio = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 4, 0)
Me.Label_Precio = .Text(Label_Precio, "$ #,##0")
Label_Producto = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 2, 0)
Label_UndMayor = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 5, 0)
Label_UndMayor = .Text(Label_UndMayor, "$ #,##0")
Label_Existencia = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 6, 0)
End With
End Sub

Intente usar la sintaxis IF, pero no la manejo muy bien y no logro que funcione.

Agradecido...

2 Respuestas

Respuesta
1

H0la hacandiam:

Podrías encerrar todo tu bloque With en el siguiente IF

If IsNumeric(Me.TextBox1.Value) Then

End If

Hola Isaac... gracias por tu respuesta... lo puse a prueba pero me da error.

Realizo la consulta de un código inexistente en mi base para probar que si no lo encuentra no muestre nada, pero me saca del formulario. 

H0la hacandiam:

Sube la macro con la actualización, para ver cómo quedó.

S@lu2

Hola Isaac... adjunto lo solicitado..

Private Sub CommandButton1_Click()
Unload Me
Frm_Portada.Show
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
------------------------------------------
Private Sub CommandButton2_Click()
Me.Label_Precio = ""
Me.Label_Producto = ""
Me.TextBox1 = ""
Me.Label_UndMayor = ""
Me.Label_Existencia = ""
End Sub
------------------------------------------------------
Private Sub TextBox1_AfterUpdate()
Dim strDescripcion As String
If IsNumeric(Me.TextBox1.Value) Then
With Application.WorksheetFunction
strDescripcion = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 1, 0)
Me.Label_Precio = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 4, 0)
Me.Label_Precio = .Text(Label_Precio, "$ ###,0")
Label_Producto = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 2, 0)
Label_UndMayor = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 5, 0)
Label_UndMayor = .Text(Label_UndMayor, "$ ###,0")
Label_Existencia = .VLookup(CDbl(Me.TextBox1.Value), Hoja5.Range("A:F"), 6, 0)
End With
End If
End Sub
-----------------------------------------------------------------
Private Sub UserForm_Initialize()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("ListadoInventario").Visible = True
Sheets("ListadoInventario").Select
Label_Precio = Format(Label_Precio, "$ ###,0")
Label_UndMayor = Format(Label_UndMayor, "$ ###,0")
End Sub
--------------------------------------------------------------
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
On Error GoTo Fin
If CloseMode <> 1 Then Cancel = True
Fin:
End Sub

Adjunte todo los comando de mi formulario, por si algo obstruye y genera el error...

Gracias...

Perfecto!

Ese error es el resultado de no encontrar el valor que estás buscando dentro de la matriz dada, no es un error del código, propiamenta tal.

Ejemplo: Si el TextBox contiene el valor 100 y ese valor no está en la tabla, entonces te devolverá el error que me envías.

Si quieres controlar el error, puedes utilizar un On Error GoTo ... al igual como lo haces en el UserForm_QueryClose.

S@lu2

Respuesta
1

En mi lista negra

¡Gracias! Por el comentario... solo intento aprender algo más, ya que soy novato en lo que hago y por ende puedo cometer errores... pero de esos errores uno aprende...

Lamento si cometí un error con usted... no fue mi intensión...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas