Problemas con métodos de búsqueda
Siempre se me a complicado mucho los métodos de búsqueda ya sea Find o VlookUp y similares. Les adjuntare un Word (o un enlace para descargarlo más precisamente) en el que escribí lo que debe hacer la macro, disculpen que no lo escribí acá, pero me excedía del número máximo de caracteres. Espero que me puedan ayudar y agradezco cualquier ayuda que me puedan ofrecer.
Este es el código que llevo hasta ahora y agradezco cualquier ayuda. Saludos
Private Sub cmdgres_Click() 'Se apaga el Update de la Pantalla Application.ScreenUpdating = False Application.DisplayAlerts = False 'On Error Resume Next 'variables Dim myfile, mybook, myfile2, mybook2, a, b, c As String Ruta = ActiveWorkbook.Path ChDir Ruta 'Explorador de Archivos para buscar el archivo de nombre variable myfile = Application.GetOpenFilename("Archivos Excel (*.xlsm), *.xlsm*", , "Seleccione el archivo de Calculo de cantidades") If VarType(myfile) = vbBoolean Then MsgBox ("Operación Cancelada"), vbCritical, "AVISO" Exit Sub End If 'Se guarda la ubicación del archivo de nombre variable mybook = ActiveWorkbook.Name Workbooks.Open Filename:=myfile, UpdateLinks:=0 FullName = Split(myfile, Application.PathSeparator) a = FullName(UBound(FullName)) 'Se aplica el filtro Set HF = Sheets("ITEMS") HF.UsedRange.AutoFilter Field:=2, Criteria1:=">=1", _ Operator:=xlOr 'Se guarda en una variable el numero de filas luego del filtro Dim cantf As Integer cantf = 0 uf = Sheets("ITEMS").Range("B" & Rows.Count).End(xlUp).Row For i = 2 To uf If Sheets("ITEMS").Cells(i, 1) <> Empty Then cantf = cantf + 1 End If Next i 'Explorador de archivos para buscar el archivo de APU myfile2 = Application.GetOpenFilename("Archivos Excel (*.xlsm), *.xlsm*", , "Seleccione el archivo de APU") If VarType(myfile) = vbBoolean Then MsgBox ("Operación Cancelada"), vbCritical, "AVISO" Exit Sub End If 'se guarda la ubicacion del archivo de APU en otra variable mybook2 = ActiveWorkbook.Name Workbooks.Open Filename:=myfile2, UpdateLinks:=0 FullName = Split(myfile, Application.PathSeparator) b = FullName(UBound(FullName)) 'Se ubica en el primer celda de la lista resultante del filtro Workbooks(a).Sheets("ITEMS").Activate ActiveSheet.Range("C6").Select Selection.End(xlDown).Select 'Guarda el código en una variable, después de asegurarse de que la celda no este vacia 'For i = 6 To cantf 'Con este ciclo lo que quiero hacer es que cuando termine la busqueda de un código regrese aca para leer y buscar el código siguiente, pero solo he logrado hacer un ciclo infinito :v If ActiveCell = Empty Then Selection.Offset(1, 0).Select End If cd = ActiveCell.Value MsgBox "El Código es: " & cd 'Hasta acá todo funciona bien ''''''' '-- --' ' --- ' ''''''' 'A partir de acá es donde hará la búsqueda del paso 4 Workbooks("b").Sheets("APU").Activate u = b.Range("B" & Rows.Count).End(xlUp).Row Set bc = b.Range("B:B" & u).Find(cd, lookat:=xlWhole, LookIn:=xlValues) If Not bc Is Nothing Then MsgBox "No se que: " & bc End If 'Next i End Sub
1 respuesta
Respuesta de Dante Amor
2