Página 1 de 1

Macro, VBA ou Função para esconder parte da planilha

Enviado: 11 Set 2016 às 12:59
por Doansel
Olá a todos, estou criando uma ficha com autopreenchimento, e 4 páginas dessa ficha não são utilizadas na maioria dos casos. Gostaria de uma forma de ocultar, ou pelo menos recolher, as linhas referentes a essas páginas atravéz de uma função logica que valide o valor de uma célula. Não entendo de VBA para criar uma função do zero, mas ouvi dizer de um amigo que fez algo parecido com colunas no mac dele, só que não entendi nada do q ele tentou me explicar.
A planilha em questão segue em anexo, as linhas que quero ocultar são 281 a 420, 421 a 560, 561 a 700, e 701 a 840.
Agradeço a ajuda.

Macro, VBA ou Função para esconder parte da planilha

Enviado: 11 Set 2016 às 15:05
por DJunqueira
Vc já está ocultando essas linhas, não entendi.

Re: Macro, VBA ou Função para esconder parte da planilha

Enviado: 11 Set 2016 às 16:49
por Doansel
quero que elas fiquem ocultas ou apareçam automaticamente dependendo de uma informação inserida antes

Macro, VBA ou Função para esconder parte da planilha

Enviado: 12 Set 2016 às 05:56
por DJunqueira
Inseridas onde?
Quais células?

Macro, VBA ou Função para esconder parte da planilha

Enviado: 12 Set 2016 às 15:34
por Doansel
quero algo assim:
se DF44 for "A" ou "D" mostrar linhas de 281 a 420, se não esconder linhas de 281 a 420
se DG44 for "A" ou "D" mostrar linhas de 421 a 560, se não esconder linhas de 421 a 560
se DH44 for "A" ou "D" mostrar linhas de 561 a 700, se não esconder linhas de 561 a 700
se DI44 for "A" ou "D" mostrar linhas de 701 a 840, se não esconder linhas de 701 a 840

Macro, VBA ou Função para esconder parte da planilha

Enviado: 14 Set 2016 às 07:30
por DJunqueira
Em DF44 vc poderia usar a seguinte fórmula:
=SEERRO(ÍNDICE(INDIRETO(BI2);5);DL36)
Vc tem o costume de usar muitos SEs encadeados, qual sua versão do Excel?

Para ocultar as linhas como vc quer vc deve salvar sua planilha como .xlsm e depois salvar o código abaixo no seu projeto VBA:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
' Macro p/ ocultar linhas com base em determinado valor em intervalo de células

    If Not Intersect(ActiveCell, Range("DF44:DI44")) Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        Select Case Target.Address
        Case "$DF$44"
            If Target.Value = "a" Or Target.Value = "d" Then
            Rows("281:420").EntireRow.Hidden = False
            Else
            Rows("281:420").EntireRow.Hidden = True
            End If
        Case "$DG$44"
            If Target.Value = "a" Or Target.Value = "d" Then
            Rows("421:560").EntireRow.Hidden = False
            Else
            Rows("421:560").EntireRow.Hidden = True
            End If
        Case "$DH$44"
            If Target.Value = "a" Or Target.Value = "d" Then
            Rows("561:700").EntireRow.Hidden = False
            Else
            Rows("561:700").EntireRow.Hidden = True
            End If
        Case "$DI$44"
            If Target.Value = "a" Or Target.Value = "d" Then
            Rows("701:840").EntireRow.Hidden = False
            Else
            Rows("701:840").EntireRow.Hidden = True
            End If
        Case Else
            Rows("281:840").EntireRow.Hidden = True
        End Select
        Application.ScreenUpdating = True
        Application.EnableEvents = True
    End If
End Sub
Se precisar de maiores instruções é só perguntar.

Re: Macro, VBA ou Função para esconder parte da planilha

Enviado: 14 Set 2016 às 15:19
por Doansel
Obrigado por sugerir a função SEERRO com a ÍNDICE, não conheço muito essas funções uteis, simplifiquei metade da planilha com elas.

O código VBA que você me mandou parece exatamente o q eu estou precisando, mas não funcionou mesmo depois de eu salvar a planilha como .xlsm, não entendo de VBA o suficiente pra entender o que está errado, mas vou continuar tentando.

Re: Macro, VBA ou Função para esconder parte da planilha

Enviado: 14 Set 2016 às 17:41
por DJunqueira
Vc habilitou o uso de macros?