Macro buscar dentro de un rango

Hola Expertos:
Necesito me ayuden a mejorar una macro, les explico... Tengo un UserForm el cual me sirve para buscar un N° de factura asociada a un determinado Proveedor, por lo tanto tiene un ComboBox que contiene el listado de proveedores y también un TextBox donde ingreso el N° de factura a buscar. Cuando realizo la búsqueda y en mi base de datos exite tanto el proveedor como el n° de factura ingresado no hay problemas, hasta ahí todo bien, ahora si no encuentra al proveedor, simplemente me arroja error un un mensaje, hata ahí todo sigue bien, sin embargo si encuentra al proveedor pero no así el n° de factura ingresado no me arroja error con el mensaje y me lleva a la hoja donde se supone debiera mostrarme la información, pero obviamente la hoja esta en blanco porque no encontró nada...¿me explique?.. Bueno aquí les dejo la macro aver si me ayudan...
Sheets("BD OC Generadas").Visible = True
Sheets("BD OC Generadas").Select
On Error GoTo noencontro
Cells.Find(What:=ComboBox1, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=3, Criteria1:=ComboBox1
Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate 'aquí es donde esta el error o donde no busca lo que necesito, yo en vez de cells. Find también probé con Range("Tabla2[[#All],[Factura Asociada]]").Find... Que es el rango donde debiera de buscar el n° de factura ingresado, pero tampoco me funsionó. '
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=6, Criteria1:=TextBox1
Range("A5").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets("calculos").Visible = True
Sheets("calculos").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Quedo atenta a sus comentarios.. Gracias de antemano... Please URGENTE..
Atentamente, vania

1 Respuesta

Respuesta
1
Por lo que veo en la macro te muestra lo que tu le has pedido, en la linea
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=3, Criteria 1:=ComboBox1
le esta pidiendo en la macro que te muestre esa Tabla, después le pides que te busque el dato de la factura como criterio el valor del TextBox1....pero no indicas que debe de hacer si no lo encuentra.
Deberías de poner alguna condición que quieras y qué debe de hacer si no encuentra el número de factura, algo así
If TextBox1 Is Nothing Then
Msgbox("Factura no existente")
Sheets("BD OC Generadas").Select
End If
No te dá error por que no tiene la linea de codigo previa a la busqueda nueva
On error GoTo noencontro
Debes de poner la linea antes de cada búsqueda para que de dispare el error si no lo encuentra.
>Un saludo
>Julio
Ya lo probé y no resulta, insisto en que debe ser porque me busca el numero dentro de toda la hoja y lo más probable es que el n° exista dentro de la hoja.. no así dentro del rango que me interesa que busque., de todas formas yo tenia dentro de la macro el on error go to noencontro... aquí te doy la macro completa. A ver si me puedes ayudar..
Sheets("BD OC Generadas").Visible = True
Sheets("BD OC Generadas").Select
On Error GoTo noencontro
Cells.Find(What:=ComboBox1, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=3, Criteria1:=ComboBox1
Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=6, Criteria1:=TextBox1
Range("A5").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets("calculos").Visible = True
Sheets("calculos").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("BD OC Generadas").Select
Application.CutCopyMode = False
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=3
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=6
Range("A1").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("calculos").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("FAC_PROV").Visible = True
Sheets("FAC_PROV").Select
Range("A10").Select
Unload UserForm18
Application.ScreenUpdating = True
Exit Sub
noencontro:
Unload UserForm18
Sheets("BD OC Generadas").Select
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=3
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=6
Sheets("Inicio").Select
Sheets("calculos").Visible = False
Sheets("BD OC Generadas").Visible = False
MsgBox ("Factura Indicada del Proveedor no Existe")
Application.ScreenUpdating = True
End Sub
Hola, quiero dar las gracias por la preocupación, sin embargo ya encontré la soluión, aquí la dejo, seguro le servirá a alguien más.
Application.ScreenUpdating = False
Sheets("BD OC Generadas").Visible = True
Sheets("BD OC Generadas").Select
On Error GoTo noencontro
Cells.Find(What:=ComboBox1, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=3, Criteria1:=ComboBox1
[F1].Select
[F:F].Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate ' Aquí es donde encontré la solución, pues la búsqueda se realiza solamente dentro de un rango especifico.
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=6, Criteria1:=TextBox1
Range("A5").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets("calculos").Visible = True
Sheets("calculos").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("BD OC Generadas").Select
Application.CutCopyMode = False
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=3
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=6
Range("A1").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("calculos").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("FAC_PROV").Visible = True
Sheets("FAC_PROV").Select
Range("A10").Select
Unload UserForm18
Application.ScreenUpdating = True
Exit Sub
noencontro:
Unload UserForm18
Sheets("BD OC Generadas").Select
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=3
ActiveSheet.ListObjects("Tabla2").Range.AutoFilter Field:=6
Sheets("Inicio").Select
Sheets("calculos").Visible = False
Sheets("BD OC Generadas").Visible = False
MsgBox ("Factura Indicada del Proveedor no Existe")
Application.ScreenUpdating = True
End Sub
De todas formas muchas gracias por el interés.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas