Como puedo modificar esta macro para que busque todos los nombres iguales

¿Cómo puedo modificar esta macro para que en vez de buscar un solo registro en el listado me busque todos los registros existentes en la tabla que cumplan la condición de la búsqueda?

Sub buscar()
Dim buscar
Dim texto As String, titulo As String
texto = "INTRODUZCA EL NOMBRE"
titulo = "Busqueda en todas las hojas del libro"
buscar = InputBox(texto, titulo)
If buscar = "" Then Exit Sub
For Each hoja In Sheets
Select Case hoja.Name
Case "Hoja1", "NOMBRES", "BUSCAR"
Case Else
With hoja.Range("A2:AA65500")
Set esta = .Find(buscar)n
If Not esta Is Nothing Then
primeracelda = esta.Address
'opcional: mostrar el nbre de la hoja según consulta original.
MsgBox hoja.Name
hoja.Activate
esta.Select
End If
End With
End Select
Next hoja
End Sub

1 Respuesta

Respuesta
1

Y si, por ejemplo, en la hoja1 hay 3 existentes, en la hoja2 hay 4 existentes.

Qué quieres hacer con los 7 resultados encontrados.

Actualmente la macro pone un mensaje, selecciona la hoja, selecciona la celda.

Quieres que vaya seleccionando celda por celda encontrada y te vaya mostrando un mensaje, es decir, siguiendo con mi ejemplo, ¿qué te muestre 7 mensajes y seleccione 7 celdas?

Me gustaría que me mostrara los 7 mensajes y las 7 celdas si pudiera ser dante. Gracias

Te regreso la macro actualizada:

Sub BuscarDatos()
'Act.Por.Dante Amor
    buscar = InputBox("INTRODUZCA EL NOMBRE", "Busqueda en todas las hojas del libro")
    If buscar = "" Then Exit Sub
    '
    For Each hoja In Sheets
        Select Case hoja.Name
            Case "Hoja1", "NOMBRES", "BUSCAR"
            Case Else
                Set r = hoja.Cells
                Set b = r.Find(buscar, lookat:=xlPart)
                If Not b Is Nothing Then
                    celda = b.Address
                    Do
                        hoja.Activate
                        b.Select
                        MsgBox "El dato se encuentra en al hoja: " & hoja.Name & vbCr & _
                               "En la celda : " & b.Address
                        Set b = r.FindNext(b)
                    Loop While Not b Is Nothing And b.Address <> celda
                End If
        End Select
    Next hoja
End Sub

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

Hola dante me da un error de compilación después de tu nombre. Un saludo

Solucionado el error dante, ¿pero podría modificar para que no me realice la búsqueda en las columnas que y l?

¿En cuáles columnas quieres buscar?

Cambia en esta línea por las columnas que quieras buscar:

Set r = hoja.Cells

Por ejemplo:

Set r = hoja.Range("A:A,C:D,G:M,O:AG")

Una pregunta dante... ¿se podrías añadir un botón para que cuando encuentres el nombre buscado deje de buscar más?

Macro actualizada, recuerda cambiar la búsqueda por las columnas que deseas

Sub BuscarDatos()
'Act.Por.Dante Amor
    buscar = InputBox("INTRODUZCA EL NOMBRE", "Busqueda en todas las hojas del libro")
    If buscar = "" Then Exit Sub
    '
    For Each hoja In Sheets
        Select Case hoja.Name
            Case "Hoja1", "NOMBRES", "BUSCAR"
            Case Else
                Set r = hoja.Cells
                Set b = r.Find(buscar, lookat:=xlPart)
                If Not b Is Nothing Then
                    celda = b.Address
                    Do
                        hoja.Activate
                        b.Select
                        res = MsgBox("El dato se encuentra en al hoja: " & hoja.Name & vbCr & _
                                     "En la celda : " & b.Address & vbCr & vbCr & _
                                     "Continuar buscando", vbQuestion + vbYesNo, "BUSCAR")
                        If res = vbNo Then Exit Sub
                        Set b = r.FindNext(b)
                    Loop While Not b Is Nothing And b.Address <> celda
                End If
        End Select
    Next hoja
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas