Macro buscar dato en hoja que cumpla dos condicine

Buenas Tardes... En días pasados obtuve una respuesta similar acerca de buscar un dato en una columna y que a la vez esta cumpliera con una condición en la columna siguiente en la misma dirección de la fila. De ser encontrado el dato ejecutara un bucle hasta que encontrara dicho dato con la condición.
El inconveniente se presenta cuando hace la segunda búsqueda solo aplica la primera condición y no tiene en cuenta la segunda condición. Osea en la instrucción
Set busca = .FindNext(busca)
Es espera de sul colaboración:
Este es el código que tengo:
Private Sub CommandButton14_Click()
Dim valor2 As String
Dim valor3 As String
valor2 = ComboBox3
valor3 = ComboBox4
Dim busca As Object
Dim hojaBusc As String, quebusco As String, mihoja As String
Dim filalibre As Integer
Dim filalibre2 As Integer
Dim filalibre3 As Integer
Dim filalibre4 As Integer
Dim quebusco3 As String
Dim primero As String
filalibre = 2
filalibre2 = 14
filalibre3 = 26
filalibre4 = 93
hojaBusc = "L_RECIBOS"
quebusco = valor2
quebusco3 = valor3
'ORDENAR TABLA
    Columns("A:AB").Select
    ActiveWorkbook.Worksheets("L_RECIBOS").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("L_RECIBOS").Sort.SortFields.Add Key:=Range( _
        "D2:D28"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("L_RECIBOS").Sort
        .SetRange Range("A1:AB28")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
' YA ORDENO LA TABLA
With Sheets(hojaBusc).Range("H1:H65000")
    Set busca = .Find(quebusco, LookIn:=xlValues, LookAt:=xlWhole)
    If Not busca Is Nothing Then
   
        primero = busca.Address
        If busca.Offset(0, -6) = quebusco3 Then
    Do
           Controls("Textbox" & CStr(filalibre)).Value = busca.Offset(0, 13)    'dato de col A
           Controls("Textbox" & CStr(filalibre2)).Value = busca.Offset(0, 19)    'dato de col A
           Controls("Textbox" & CStr(filalibre3)).Value = busca.Offset(0, 20)    'dato de col A
           Controls("Label" & CStr(filalibre4)).Caption = busca.Offset(0, -5)    'dato de col A
           filalibre = filalibre + 1
           filalibre2 = filalibre2 + 1
           filalibre3 = filalibre3 + 1
           filalibre4 = filalibre4 + 1
     Set busca = .FindNext(busca)
    Loop While Not busca Is Nothing And busca.Address <> primero
    End If
    Else
          MsgBox "No Hay dato para Mostrar"
              ComboBox3.SetFocus
    End If
    End With
    Set busca = Nothing
End Sub

1 Respuesta

Respuesta
1
Falta agregar la 2da condición en la línea del Loop:
Loop While Not busca Is Nothing And busca.Offset(0, -6) = quebusco3 And busca.Address <> primero
Pruébala y comentame,.
Sdos
Elsa
Buenos Dias Dr. Elsa....
Saludos..
Bueno Dr. probe la correccion que sugiere y pasa lo siguiente:
Resulta que antes me filtraba todo lo de la primera condición sin tener en cuenta la segunda condición, ahora con la corrección me filtra la primera y segunda condición pero la primera de la segunda concidion encontrada, de ahí en adelante no me muestra los datos de la segunda condición si existe alguna de ahí en adelante.
Me explico:
Si la primera condición es LUIS CARLOS y la segunda condición es 2009, listo, me muestra todo lo del 2009, pero si le digo que me muestre lo del 2010 ya no me muestra nada. Se queda solo en la consulta del 2009, habiendo datos del 2010.
En espera de su colaboración.
No sé qué estás haciendo mal, porque cuando cambiás el 3er criterio (quebusco3 = valor3) no puede ser que con 1 año funcione y con otro no.
¿Cómo le indicás el valor3? Asegurate que lo tengas en el mismo formato, sin espacios, etc.
Si te parece que podes enviarme la hoja para que la revise, el correo lo encontrarás en mi sitio.
En el 2do combo tenés la lista de años. Son valores numéricos pero el combo te devuelve 'texto' al igual que los Textbox.
Tenés que convertirlos a nros para realizar la búsqueda:
valor3 = Val(ComboBox4)
quebusco2 = valor3
PD) En el manual, cap 3 encontrarás otras funciones de conversión.
Buen Día...
Dra Elsa...
Tal como lo sugiere convierto el valor del Combobox4 así: valor3 = Val(ComboBox4)
quebusco2 = valor3
Pero persiste el error en la consulta. Dra se me ocurre decir es como si no se desasignara el valor del combobox al repetir la búsqueda.
Para el caso del ejemplo consulto datos del señor LOZANO MADERA OMAR JULIO en el año 2009, (casualmente es el primero de la tabla "L_RECIBOS") y luego consulto del año 2010 (están por debajo del 2009 en la tabla) y ya no me muestra.
mil disculpas Dra. elsa.
Que me sugiere debo hacer adiconalmente.
Saludos..
Te envío tu libro...
Sdos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas