Como evitar este bucle infinito
Publicado por Alicia (19 intervenciones) el 12/10/2007 19:27:48
A ver, tengo una hoja en la que tengo que buscar coincidencia de nombre, apellido y segundo apellido en la primera fila. Cada dato (nombre, apellido, segundo apellido) esta en una columna de la primera fila. Este codigo que he hecho me lo encuentra correctamente si existe nombre, apellido y segundo apellido que busque, pero si no hay coincidencia, se queda en bucle infinito. ¿Como hago para que FIND, al llegar a la ultima celda del rango seleccionado, me devuelva algun codigo de error "no encontrado" y asi poder yo salir del do while/loop presentando un mensaje de "no se encontro persona buscada..."
Option Explicit
Sub BuscaNombre()
'Busca Nombre y apellidos
Dim msg As String
Dim Nombre As String
Dim Apellido As String
Dim SegundoApellido As String
Dim Temp1 As String
Dim Temp2 As String
Dim Encontrado As Boolean
On Error GoTo msg_error
Nombre = InputBox("Introduce Nombre")
Apellido = InputBox("Introduce Apellido")
SegundoApellido = InputBox("Introduce Segundo Apellido")
Rows("1:1").Select
Do
Selection.Find(What:=Nombre, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Temp1 = ActiveCell.Offset(0, 1).Value
Temp2 = ActiveCell.Offset(0, 2).Value
If Temp1 = Apellido And Temp2 = SegundoApellido Then
Encontrado = True
Else
Encontrado = False
End If
Loop While Encontrado = False
msg = MsgBox("Encontrado", vbOKOnly, "Cadena Encontrada...")
Exit Sub
msg_error:
msg = MsgBox(Chr(13) & " Se ha producido un error." & Chr(13) & " Por favor, vuelve a intentarlo. ", vbOKOnly, "Lo sentimos...")
End Sub
Option Explicit
Sub BuscaNombre()
'Busca Nombre y apellidos
Dim msg As String
Dim Nombre As String
Dim Apellido As String
Dim SegundoApellido As String
Dim Temp1 As String
Dim Temp2 As String
Dim Encontrado As Boolean
On Error GoTo msg_error
Nombre = InputBox("Introduce Nombre")
Apellido = InputBox("Introduce Apellido")
SegundoApellido = InputBox("Introduce Segundo Apellido")
Rows("1:1").Select
Do
Selection.Find(What:=Nombre, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Temp1 = ActiveCell.Offset(0, 1).Value
Temp2 = ActiveCell.Offset(0, 2).Value
If Temp1 = Apellido And Temp2 = SegundoApellido Then
Encontrado = True
Else
Encontrado = False
End If
Loop While Encontrado = False
msg = MsgBox("Encontrado", vbOKOnly, "Cadena Encontrada...")
Exit Sub
msg_error:
msg = MsgBox(Chr(13) & " Se ha producido un error." & Chr(13) & " Por favor, vuelve a intentarlo. ", vbOKOnly, "Lo sentimos...")
End Sub
Valora esta pregunta


0