Búsquedas en varias hojas de un mismo libro

Tengo un libro de Excel con 34 hojas con distintos datos. La primera hoja es un indice de las restantes y he añadido un botón que abre un Inputbox donde introducir el texto que se quiere buscar. La búsqueda en las distintas hojas la he solucionado con un código que encontré en esta misma web.
Cuando encuentra el texto buscado se va a la hoja en la que esta y si hay más hojas con el mismo texto aparece una ventana que lo indica y permite pasar a la siguiente hoja.
Lo que quisiera es que cuando se posiciona en la primera hoja donde ha encontrado el texto buscado me destaque la celda donde esta ese texto para facilitar su visión. Si no es lo que necesito siga buscando en esa hoja la siguiente celda donde aparece el mismo texto y si llega a final pasar a la siguiente hoja donde figure dicho texto. Una vez que se ha encontrado lo que se busca que pueda parar el ciclo para que no continué buscando en otras hojas y finalmente que pueda ordenarle volver a la hoja indice.
El código que he encontré y he utilizado es este:
Private Sub CommandButton1_Click()
Dim buscar
Dim texto As String, titulo As String
texto = "Introduzca su busqueda"
titulo = "Busqueda en todas las hojas del libro"
buscar = InputBox(texto, titulo)
If buscar = "" Then Exit Sub
For Each hoja In Sheets
If hoja.Name <> "INDICE" Then
With hoja.Range("A2:AA65500")
hoja.Activate
Set esta = .Find(buscar)
If Not esta Is Nothing Then
primeracelda = esta.Activate
MsgBox hoja.Name
hoja.Select
End If
End With
End If
Next hoja
End Sub
Gracias

1 respuesta

Respuesta
1
Te adjunto la rutina ajustada a este requerimiento.
En el MsgBox podes incluir el nbre de hoja si te hiciera falta.
Private Sub CommandButton1_Click()
Dim buscar
Dim texto As String, titulo As String
texto = "Introduzca su busqueda"
titulo = "Busqueda en todas las hojas del libro"
buscar = InputBox(texto, titulo)
If buscar = "" Then Exit Sub
For Each hoja In Sheets
If hoja.Name <> "Principal" Then
With hoja.Range("A2:AA65500")
hoja.Activate
Set esta = .Find(buscar, LookIn:=xlValues, lookat:=xlWhole)
If Not esta Is Nothing Then
primeracelda = esta.Address
Do
esta.Select
sino = MsgBox("Estás en hoja " & hoja.Name & " ¿Deseas continuar la búsqueda?", vbYesNo)
If sino <> vbYes Then Sheets("Principal").Select: Exit Sub
Set esta = .FindNext(esta)
Loop While Not esta Is Nothing And esta.Address <> primeracelda
End If
End With
End If
Next hoja

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas