Quiero hacer que todas las filas en un rango tengan una cierta altura, EXCEPTO las filas ocultas. Tan pronto como mi código llega a .SpecialCells (xlCellTypeVisible), salta a Private Sub(), luego regresa y hace .RowHeight = 12 y cambia todas mis filas, incluidas las ocultas. ¿Cómo evito que ajuste las filas ocultas?

Sub CreateSched()
    
    Worksheets("Schedule").Activate
    
    Sheets("Schedule").Unprotect
    
    Dim t As Range, u As Range
    Set u = Range("F6:F282")
    
        Application.ScreenUpdating = False

        For Each t In u
            If Not IsEmpty(t.Value) And t = 0 Then
                t.EntireRow.Hidden = True
            ElseIf t > 0 Then
                t.EntireRow.Hidden = False
            End If
        Next t
        
    Application.ScreenUpdating = True
    
    Columns("B:AA").AutoFit
    
    With Worksheets("Schedule").Range("E1:E304")
        .SpecialCells (xlCellTypeVisible)
        .RowHeight = 12
    End With
    
    Sheets("Schedule").Protect
End Sub
0
eyeScream 25 jun. 2020 a las 23:24

2 respuestas

La mejor respuesta

Pruebe esto: algunas sugerencias para evitar seleccionar / activar (normalmente esto no es obligatorio)

Sub CreateSched()
    
    Dim t As Range
    
    With Worksheets("Schedule")
        Application.ScreenUpdating = False
        .Unprotect
        For Each t In .Range("F6:F282").Cells
            If Not IsEmpty(t.Value) And t = 0 Then
                t.EntireRow.Hidden = True
            ElseIf t > 0 Then
                t.EntireRow.Hidden = False
            End If
        Next t
        On Error Resume Next '<< in case no visible rows
        .Range("E1:E304").SpecialCells(xlCellTypeVisible).RowHeight = 12
        On Error Goto 0 'stop ignoring errors
        .Columns("B:AA").AutoFit
        .Protect
        Application.ScreenUpdating = True
    End With
    
End Sub
4
Tim Williams 25 jun. 2020 a las 20:36

Lo intentaría:

With Worksheets("Schedule").Range("E1:E304").SpecialCells (xlCellTypeVisible)
    .RowHeight = 12
End With

En este momento, su código está cambiando todas las celdas a visible, luego ajustando todas sus alturas.

2
dwirony 25 jun. 2020 a las 20:30