none
ocultar linha automaticamente RRS feed

  • Pergunta

  • tenho um arquivo de excel com varias planilhas, cada planilha tem 130 linhas com 20 colunas preenchidas automaticamente por formula, porem nem todas as linhas são preenchidas, gostaria de saber como faço para ocultar automaticamente as linhas que estiverem em branco desde que não tenha nenhum valor da coluna B ate T, se por exemplo conter valor na coluna R de uma determinada linha não pode ocultar. Tambem preciso reexibir quando necessario as que estão em branco.

    obrigado

    otahu

    quarta-feira, 26 de agosto de 2015 13:11

Respostas

  • Sub OcultarVazias()
        Dim iWorksheet As Worksheet
        Dim iRow As Long
        Dim LastRow As Long
        
        For Each iWorksheet In ThisWorkbook.Worksheets
            With iWorksheet
                LastRow = .UsedRange(.UsedRange.Cells.CountLarge).Row
                For iRow = 1 To LastRow
                    If WorksheetFunction.CountA(.Range("B1:T1").Offset(iRow)) = 0 Then
                        .Rows(iRow).Hidden = True
                    End If
                Next iRow
            End With
        Next iWorksheet
    End Sub
    
    Sub MostrarTudo()
        Dim iWorksheet As Worksheet
        
        For Each iWorksheet In ThisWorkbook.Worksheets
            iWorksheet.Rows.Hidden = False
        Next iWorksheet
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 26 de agosto de 2015 14:36
    Moderador

Todas as Respostas

  • Sub OcultarVazias()
        Dim iWorksheet As Worksheet
        Dim iRow As Long
        Dim LastRow As Long
        
        For Each iWorksheet In ThisWorkbook.Worksheets
            With iWorksheet
                LastRow = .UsedRange(.UsedRange.Cells.CountLarge).Row
                For iRow = 1 To LastRow
                    If WorksheetFunction.CountA(.Range("B1:T1").Offset(iRow)) = 0 Then
                        .Rows(iRow).Hidden = True
                    End If
                Next iRow
            End With
        Next iWorksheet
    End Sub
    
    Sub MostrarTudo()
        Dim iWorksheet As Worksheet
        
        For Each iWorksheet In ThisWorkbook.Worksheets
            iWorksheet.Rows.Hidden = False
        Next iWorksheet
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 26 de agosto de 2015 14:36
    Moderador
  • Felipe, 

    Apliquei sua resposta, porem não ocultou todas a linhas em branco, esta ocultando a ultima linha com valor, não entendi porque....

    obrigado

    otahu

    quarta-feira, 26 de agosto de 2015 18:04
  • para ocultar pode tentar algo assim

    Sub oculta_Linha_de_range_vazia()
    
    
     For Each Nome_aba In ThisWorkbook.Worksheets
        With Nome_aba
    
            ci = Cells(1, "b").Column    '--->primeira coluna da range
            cf = Cells(1, "T").Column    '--->ultima coluna da range
            li = 3    ' --->primeira linha da range
    
            For c = ci To cf    'pega ultima linha da range
                L = .Cells(Rows.Count, c).End(xlUp).Row
                If L > lf Then
                    lf = L
                End If
            Next
            If lf < li Then Exit Sub
            For L = li To lf
                For c = ci To cf    '---->> ( verifica se tem valor na linha )
                v = .Cells(L, c).Value2
                    If v <> "" And v <> 0 Then GoTo pulaloop  '---->> ( se achar valor pula a linha )
                Next
                .Rows(L).Hidden = True
    pulaloop:
            Next
        End With
        Next
    End Sub

    quinta-feira, 27 de agosto de 2015 00:07
  • Felipe, ok funcionou

    muito obrigado

    quinta-feira, 27 de agosto de 2015 19:47