Buscar datos unicamente en hojas activas

Buenos días, y gracia por la ayuda prestada.

He intentado hacer que un código busque solo en las hojas activas y no intente buscar en las hojas ocultas ya que si oculto alguna hojas en el libro, la macro deja de funcionar. Intente cambiar las instrucciones ActiveWorkbook.Sheets por ActiveWorkbook.ActiveSheets, y otras combinaciones pero no logro que funcione.mientras que no se oculten hojas funciona a la perfección. Pero en ocasiones oculto hojas y ahi surge el problema. Bueno el código es este:

Sub ejemplo()
Sheets("buscador").Select
Dim Ufil, Ucol, Fila As Integer
For Each hoja In ActiveWorkbook.Sheets
If LCase(hoja.Name) = "buscador" Then
Ufil =hoja.Range("A" & Cells.Rows.Count).End(xlUp).Row
Ucol =hoja.Cells(1, Cells.Columns.Count).End(xlToLeft).Column
If Ufil < 2
Then Ufil = 2
hoja.Range(Cells(2, 1), Cells(Ufil, Ucol)).ClearContents
End If
Next
dato = InputBox("INGRESA LA BÚSQUEDA??")
If dato = "" Then Exit Sub
dato = UCase(dato)
Fila = 2
Application.ScreenUpdating = False
For X = 1 To Sheets.Count
Sheets(X).Select
For Each celda In
ActiveSheet.UsedRange
If
UCase(celda) Like "*" & dato & "*" Then
Sheets("buscador").Cells(Fila, 1).Value = Sheets(X).Name
Sheets("buscador").Cells(Fila, 2).Value = celda.Address(False,
False)
Sheets("buscador").Cells(Fila, 3).Value = celda.Value
Sheets("buscador").Cells(Fila, 4).Value = celda.Offset(0,
1).Value
Fila =
Fila + 1
End If
Next
Next
Sheets("buscador").Select
ActiveSheet.Columns("a:d").EntireColumn.AutoFit
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "los encuentros están anotados buscador"
End Sub

y bueno gracias.

1 respuesta

Respuesta
1

Te regreso el código, revisa esta parte: If Sheets(X).Visible = True Then

Sub ejemplo()
Sheets("buscador").Select
Dim Ufil, Ucol, Fila As Integer
For Each hoja In ActiveWorkbook.Sheets
    If LCase(hoja.Name) = "buscador" Then
        Ufil = hoja.Range("A" & Cells.Rows.Count).End(xlUp).Row
        Ucol = hoja.Cells(1, Cells.Columns.Count).End(xlToLeft).Column
        If Ufil < 2 Then Ufil = 2
        hoja.Range(Cells(2, 1), Cells(Ufil, Ucol)).ClearContents
    End If
Next
dato = InputBox("INGRESA LA BÚSQUEDA??")
If dato = "" Then Exit Sub
dato = UCase(dato)
Fila = 2
Application.ScreenUpdating = False
For X = 1 To Sheets.Count
    'verifica si la hoja está visible
    If Sheets(X).Visible = True Then
        Sheets(X).Select
        For Each celda In ActiveSheet.UsedRange
            If UCase(celda) Like "*" & dato & "*" Then
                Sheets("buscador").Cells(Fila, 1).Value = Sheets(X).Name
                Sheets("buscador").Cells(Fila, 2).Value = celda.Address(False, False)
                Sheets("buscador").Cells(Fila, 3).Value = celda.Value
                Sheets("buscador").Cells(Fila, 4).Value = celda.Offset(0, 1).Value
                Fila = Fila + 1
            End If
        Next
    End If
Next
Sheets("buscador").Select
ActiveSheet.Columns("a:d").EntireColumn.AutoFit
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "los encuentros están anotados  buscador"
End Sub

Saludos.DAM
Si es lo que necesitas.

Gracias, ya lo revise y funciona muy bien. ahora ya realiza la comprobación de las hojas activas. en realidad es un gran foro , un saludo y sinceramente gracias DAM

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas