Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#15036
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.
Você não está autorizado a ver ou baixar esse anexo.
#15079
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
#15148
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.
#15161
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.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord