Excel - Aplicar Macro de filtro a todas las hojas excepto la Principal

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 162 puestos en Excel (en relación al último mes)
Gráfica de Excel

Aplicar Macro de filtro a todas las hojas excepto la Principal

Publicado por Nestor (7 intervenciones) el 13/06/2020 01:41:07
Hola, necesito aplicar el macro que me oculta filas que pongo a continuación a todas las hojas del libro salvo a las hojas "Principal" y "Usuario"

1
2
3
4
5
6
7
8
9
10
Sub Ocultarfilasmaterias()
Application.ScreenUpdating = False 'Evita el parpadeo'
col = "U"
For i = 11 To 553
'si es igual a 1
If Cells(i, col) = 1 Then
Rows(i).EntireRow.Hidden = True
End If
Next
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Aplicar Macro de filtro a todas las hojas excepto la Principal

Publicado por Antoni Masana (2482 intervenciones) el 13/06/2020 09:51:48
Estos son los cambios para que funcione en todas las hojas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Ocultarfilasmaterias()
    Dim a As Integer, i as Integer. Actual as String
    Actual = ActiveSheet.Name            ' --- Guarda la hoja actual
    Application.ScreenUpdating = False   ' --- Evita el parpadeo'
    For a = 1 To Sheets.Count
        If UCase(Sheets(a).Name) <> "PRINCIPAL" And UCase(Sheets(a).Name) <> "USUARIO" Then
            Sheets(Sheets(a).Name).Select
            For i = 11 To 553
                ' --- si es igual a 1
                If Cells(i, "U") = 1 Then Rows(i).EntireRow.Hidden = True
            Next
        End If
    Next
    Sheets(Actual).Select              ' --- Deja activa la hoja dende estaba
    Application.ScreenUpdating = True  ' --- Evita el parpadeo'
End Sub


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 162 puestos en Excel (en relación al último mes)
Gráfica de Excel

Aplicar Macro de filtro a todas las hojas excepto la Principal

Publicado por Nestor (7 intervenciones) el 13/06/2020 19:04:38
Cuando lo ejecuto me da error en

Dim a As Integer, i as Integer. Actual as String

Te adjunto un archivo como ejemplo, tal vez es mas fácil ver.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Aplicar Macro de filtro a todas las hojas excepto la Principal

Publicado por Antoni Masana (2482 intervenciones) el 13/06/2020 22:30:28
Es un error tipográfico, en lugar de un punto tiene que haber una coma

1
Dim a As Integer, i as Integer, Actual as String

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 162 puestos en Excel (en relación al último mes)
Gráfica de Excel

Aplicar Macro de filtro a todas las hojas excepto la Principal

Publicado por Nestor (7 intervenciones) el 13/06/2020 22:57:46
Ahora el error me lo da en:


Sheets(Sheets(a).Name).Select
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 162 puestos en Excel (en relación al último mes)
Gráfica de Excel

Aplicar Macro de filtro a todas las hojas excepto la Principal

Publicado por Nestor (7 intervenciones) el 13/06/2020 23:27:05
Ahora el error me da acá:
Sheets(Sheets(a).Name).Select


Te pongo ademas el código completo con todas las excepciones por las dudas que el problema sea ese.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Ocultarfilasmaterias()
    Dim a As Integer, i As Integer, Actual As String
    Actual = ActiveSheet.Name            ' --- Guarda la hoja actual
    Application.ScreenUpdating = False   ' --- Evita el parpadeo'
    For a = 1 To Sheets.Count
        If UCase(Sheets(a).Name) <> "Principal" And UCase(Sheets(a).Name) <> "Base" And UCase(Sheets(a).Name) <> "Correspondencia" And UCase(Sheets(a).Name) <> "Materias" And UCase(Sheets(a).Name) <> "Usuarios2" Then
            Sheets(Sheets(a).Name).Select
            For i = 11 To 553
                ' --- si es igual a 1
                If Cells(i, "U") = 1 Then Rows(i).EntireRow.Hidden = True
            Next
        End If
    Next
    Sheets(Actual).Select              ' --- Deja activa la hoja donde estaba
    Application.ScreenUpdating = True  ' --- Evita el parpadeo'
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Aplicar Macro de filtro a todas las hojas excepto la Principal

Publicado por Antoni Masana (2482 intervenciones) el 14/06/2020 08:52:15
El código que te envíe, con la corrección funciona bien, buen bien porque no da error, no se si ocultar lo hace bien.

En el código que has puesto tiene un fallo o una incoherencia y puede ser que sea culpa mía por no haber explicado todo lo que hago.
La instrucción UCASE lo que hace es convertir en texto en mayúsculas esto lo hago porque al Excel le da lo mismo si llamas a una hoja Base, base, BaSe o BASE para Excel es la misma hoja, por eso en el IF paso todos los nombres a mayúsculas porque en el IF "Base" no es ingual a "BASE".
Si estas seguro de que el nombre de la hoja sera exactamente igual al que pongas en el codigo quitemos los UCASE.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Ocultarfilasmaterias()
    Dim a As Integer, i As Integer, Actual As String
    Actual = ActiveSheet.Name ' --- Guarda la hoja actual
    Application.ScreenUpdating = False ' --- Evita el parpadeo'
    For a = 1 To Sheets.Count
        If Sheets(a).Name <> "Principal"       And _
           Sheets(a).Name <> "Base"            And _
           Sheets(a).Name <> "Correspondencia" And _
           Sheets(a).Name <> "Materias"        And _
           Sheets(a).Name <> "Usuarios2"       Then
           Sheets(a).Select
            For i = 11 To 553
                ' --- si es igual a 1
                If Cells(i, "U") = 1 Then Rows(i).EntireRow.Hidden = True
            Next
        End If
    Next
    Sheets(Actual).Select ' --- Deja activa la hoja donde estaba
    Application.ScreenUpdating = True ' --- Evita el parpadeo'
End Sub


He probado la macro en el libro que enviaste y no da error.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar