Metodo Find Next , buscar en Columna a partir de Cierta Fila...

Pregunta para Dante Amor

En el Código que me proporcinaste se puede modificar para que busque a partir de la celda B50 hacia abajo, y si termina el rango que ya no regrese al principio de la columna y continué buscando..

Por ejemplo Agrefar al Codigo Find "After:ActiveCell"

 Set b = r.Find(Nombre_Desp, After:ActiveCell lookat:=xlWhole)    If Not b Is Nothing Then        ncell = b.Address        Do            If h.Cells(b.Row, "C") = FSI Then                MsgBox "encontrado"                '                'tu código                '                Exit Do            End If            Set b = r.FindNext(b)        Loop While Not b Is Nothing And b.Address <> ncell    End If

1 respuesta

Respuesta
2

En realidad el código que te envié fue este:

For w = 0 To (dias_nat - 1) '{{{{{{{{ le ponemos un -1 por que empezamos desde 0
    Sheets(asis). Activate
    'por. Dante amor
    Set h = Sheets(asis)
    Set r = h.Columns("b")
    Set b = r.Find(nombre_desp, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            If h.Cells(b.Row, "c") = fsi Then
                'msgbox "encontrado"
                '
                'TODO EL CÓDIGO
                '
                Exit Do
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    If ban1 = 1 Then '*   'aqui si encuentra dato que ya no siga buscando
        ban1 = 0
        '    exit do
    End If '*
    fsi = fsi + 1    'aqui va incrementanto las fecha, va sumando dias
Next w '{{{{{{{{

Así quedaría con los cambios:

For w = 0 To (dias_nat - 1) '{{{{{{{{ le ponemos un -1 por que empezamos desde 0
    Sheets(asis).Activate
    'por.dante amor
    Set h = Sheets(asis)
    u = h.Range("B" & Rows.Count).End(xlUp).Row
    Set r = h.Range("B49:B" & u)
    Set b = r.Find(nombre_desp, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            If h.Cells(b.Row, "c") = fsi Then
                'msgbox "encontrado"
                '
                'TODO EL CÓDIGO
                '
                Exit Do
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    If ban1 = 1 Then '*   'aqui si encuentra dato que ya no siga buscando
        ban1 = 0
        '    exit do
    End If '*
    fsi = fsi + 1    'aqui va incrementanto las fecha, va sumando dias
Next w '{{{{{{{{

Observa en la instrucción siguiente, se establece el rango de búsqueda desde la fila 49 hasta la última fila con datos:

Set r = h.Range("B49:B" & u)

Le pongo 49, porque en realidad empieza a buscar en la 50.

Prueba el código en tu hoja y me comentas.

Hola Dante

Es Cierto, modifique el código una disculpa...

Lo tuve que modificar por que le entiendo un poco más así, créeme que lo leía y ejecutaba una y otra vez el código que me enviaste y me confundía...

Así que decidí cambiarlo a mi manera e ir paso por paso con F8...

Me podrás ayudar con el código que mande...

Saludos!...

En la primera línea tienes esto:

Set b = r.Find(Nombre_Desp, After:ActiveCell lookat:=xlWhole)

Te falta un = y una coma, debería ser así

Set b = r.Find(Nombre_Desp, After:ActiveCell lookat:=xlWhole)

Pero para que funcione, primero deberías seleccionar la hoja y después la celda desde quieres empezar la búsqueda.

Después de esta línea

Sheets(ASIS). Activate

Pon:

Range("B50").select

Quedaría algo así:

 Sheets(ASIS). Activate
    Range("B50").Select
    Set b = r.Find(Nombre_Desp, After:=ActiveCell, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            If h.Cells(b.Row, "C") = FSI Then
                MsgBox "encontrado"
                '
                'tu código
                '
                Exit Do
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If

Saludos.Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas