¿Como utilizar el Método Find y FindNext en vba?

Cree el siguiente formulario:

En el TexBox "Nombre" al ingresar tal dato los TextBox "Matricula" y "No. De Accidente" se arrellanaran acorde a una base de datos:

Como se observa la misma persona tiene múltiples registros con id´s diferentes en la columna "numero de accidente", también se puede ver una columna que indica el "estatus de la deuda".

Mi problema radica que al realizar la búsqueda, en el TextBox "No. De Accidente" me muestra el primer registro de accidente encontrado el cual ya esta PAGADO, lo cual no me funciona ya que lo que requiero es que regrese el registro de la siguiente fila que indica COBRANDO ("10.11.58")

Entonces: ¿Cómo logro que mi TextBox "No. De Accidente" regrese el Registro de la fila siguiente que indica "COBRANDO" en el evento Change del TextBox "Nombre"?

He utilizado el siguiente código:

Private Sub txt_nombre_Change()
dato = txt_nombre
Set busco = Hoja1.Range("h:h").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
If Not busco Is Nothing Then
txt_matricula = busco.Offset(0, -1) 'aquí lo que se encuentra en la 1er col a izq del dato encontrado
txt_acci = busco.Offset(0, -2)
End If
End Sub

He leído que el método FindNext se puede utilizar para resolver este problema pero no comprendo como utilizarlo.

Recalco que soy un total aficionado a la programación lo que he logrado es en base a tutoriales por youtube y pdf en internet así que desconozco muchos términos y métodos, por lo general logro resolver mis dudas por mi cuenta, sin embargo, en este punto estoy estancado.

1 respuesta

Respuesta
2

Te anexo el código actualizado

Private Sub txt_nombre_Change()
'Por.Dante Amor
    Set r = Hoja1.Range("H:H")
    Set b = r.Find(txt_nombre, LookIn:=xlValues, LookAt:=xlWhole)
    If Not b Is Nothing Then
        celda = b.Address
        Do
            'detalle
            If Hoja1.Cells(b.Row, "W") = "COBRANDO" Then
                txt_matricula = Hoja1.Cells(b.Row, "G")
                txt_acci = Hoja1.Cells(b.Row, "F")
                Exit Do
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> celda
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas