Ir ao conteúdo
  • Cadastre-se

Ocultar linhas abaixo da última preenchida em VBA


Posts recomendados

Estou com problema em uma que seguirá abaixo. Nela eu preciso selecionar varias planilhas diferentes e que encontra em cada uma delas qual é a ultima linha preenchida e oculte todas a partir da primeira linha vazia. Eu só consegui fazer selecionando uma planilha. Selecionando mais de uma não consegui. Se puder ajudar será ótimo!

 

Sub Ocultar()

Application.ScreenUpdating = False
' Seleciona a planilha que será utilizada

Sheets("Pax").Select

' Dimensiona as variaveis

Dim i As Integer

Dim intultlinha As Integer

'Encontra a última linha preenchida

intultlinha = Cells(Rows.Count, 3).End(xlUp).Row

'Define o que será feito

For i = intultlinha + 1 To 300

' Se a linha seguinte a última preenchida for vazia, então...

If Cells(intultlinha & 3).Value = "" Then

' Seleciona o range a ser escondido
Rows(i & ":" & 200).Select

' Esconde o Range selecionado

Selection.EntireRow.Hidden = True


Else
End If
Next i


End Sub
 

Link para o comentário
Compartilhar em outros sites

Atmos, boa tarde.

 

Supondo que você já selecionou várias planilhas com o mouse (seleção múltipla), uma saída para ocultar todas as linhas abaixo da última a conter algum tipo de informação poderia ser:

 

Sub OcultaLinhas()
  'Oculta linhas vazias após a última linha com algum conteúdo de cada uma das planilhas selecionadas
  'através de seleção múltipla. Se for planilha vazia ou com dados apenas na primeira linha, oculta da
  'linha 2 em diante.
  'Por: Edson Luiz Branco ref. dúvida de Atmos de Souza Maciel no fórum ClubeDoHardware
  'https://www.clubedohardware.com.br/forums/topic/1209269-ocultar-linhas-abaixo-da-última-preenchida-em-vba/
  Dim wsSelecionadas As Sheets, ws As Worksheet
  Dim rgDados As Range, linOcultas As Range
  Set wsSelecionadas = Application.ActiveWindow.SelectedSheets
  Application.ScreenUpdating = False
    For Each ws In wsSelecionadas
      Set rgDados = Range("A1", ws.UsedRange)
      If rgDados.Rows.Count > 1 Then
        On Error Resume Next
        Do While rgDados.Rows(rgDados.Rows.Count).SpecialCells(xlCellTypeBlanks).Count = _
                 rgDados.Columns.Count
            If Not (Err.Number = 1004) Then
               Set rgDados = rgDados.Resize(rgDados.Rows.Count - 1, rgDados.Columns.Count)
            Else
              Err.Clear
              Exit Do
            End If
        Loop
      End If
      Set linOcultas = Range(rgDados(rgDados.Cells.Count).Offset(1, 0).EntireRow, ws.Rows(ws.Rows.Count))
      linOcultas.EntireRow.Hidden = True
    Next
  Application.ScreenUpdating = True
End Sub

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!