Página 1 de 1

OCULTAR/EXIBIR LINHAS AUTOMATICAMENTE

Enviado: 19 Abr 2017 às 11:57
por eloirfabio
Bom dia.
Estou fazendo uma PPP (PERFIL PROFISSIOGRÁFICO PREVIDENCIÁRIO), e preciso da seguinte solução:
- É preciso incluir os dados dos exames realizados no funcionário durante o tempo em que ficou na empresa;
- Dependendo do tempo de serviço, o mesmo pode ter realizado mais de um exame semestral/periódico;
- Como estou querendo fazer tudo de forma automatizada, queria saber se haveria uma maneira de exibir as linhas somente se eu inserir as informações, caso contrario, ficariam ocultas, sem a necessidade de intervenção manual do operador.

Coloquei um código VBA para ocultar/exibir, porém, é manual, e seria necessário criar mais uns 3 ou 4 botões, conforme a quantidade de exames.
Como sou apenas um entusiasta na área do VBA venho pedir a ajuda de vocês.

Re: OCULTAR/EXIBIR LINHAS AUTOMATICAMENTE

Enviado: 19 Abr 2017 às 14:38
por alexandrevba
Boa tarde!!

Tente algo assim:
Código: Selecionar todos
Private Sub Worksheet_Calculate()
Dim WF As WorksheetFunction: Set WF = WorksheetFunction
Dim w1 As Worksheet: Set w1 = ActiveWorkbook.Sheets("DADOS")
Dim w2 As Worksheet: Set w2 = ActiveWorkbook.Sheets("PPP")
Application.EnableEvents = False
    If WF.Sum(w1.Range("$H$12:$K$17")) = 0 Then
           w2.Rows("72:95").Hidden = True
       Else
           w2.Rows("72:95").Hidden = False
    End If
Application.EnableEvents = True
End Sub
Esse código deve ser posto dentro do módulo de planilha
Att

Re: OCULTAR/EXIBIR LINHAS AUTOMATICAMENTE

Enviado: 19 Abr 2017 às 15:56
por luizpaps
após alguns testes verifiquei que o código acima apresentava erros, sendo assim desenvolvi esse novo:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lin         As Integer
Dim ws          As Worksheet
Dim ws1         As Worksheet


Application.ScreenUpdating = False
Application.EnableEvents = False

    Set ws = Sheets("PPP")
    Set ws1 = Sheets("Dados")
    ws1.Select

    If (ws1.Cells(13, 8) = "") Then
        ws.Select
        ws.Rows("72:77").Select
        Selection.EntireRow.Hidden = True
        Else
            ws.Select
            ws.Rows("72:77").Select
            Selection.EntireRow.Hidden = False
    End If
    
    If (ws1.Cells(14, 8) = "") Then
        ws.Select
        ws.Rows("78:83").Select
        Selection.EntireRow.Hidden = True
        Else
            ws.Select
            ws.Rows("78:83").Select
            Selection.EntireRow.Hidden = False
    End If
    
    If (ws1.Cells(15, 8) = "") Then
        ws.Select
        ws.Rows("84:89").Select
        Selection.EntireRow.Hidden = True
        Else
            ws.Select
            ws.Rows("84:89").Select
            Selection.EntireRow.Hidden = False
    End If
   
    If (ws1.Cells(16, 8) = "") Then
        ws.Select
        ws.Rows("90:95").Select
        Selection.EntireRow.Hidden = True
        Else
            ws.Select
            ws.Rows("90:95").Select
            Selection.EntireRow.Hidden = False
    End If
  
    ws1.Select
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    

End Sub

teste ai e veja se da certo

OCULTAR/EXIBIR LINHAS AUTOMATICAMENTE

Enviado: 19 Abr 2017 às 16:59
por eloirfabio
Boa tarde.
O código realmente oculta ^^, porém não de maneira esperada. Admissional e Demissional vai ter sempre, as variáveis serão as mudanças de função e exames periódicos. por exemplo: o colaborador realizou 1 exame periódico durante o tempo na empresa - irá aparecer na PPP: Admissional, Periódico e Demissional. Teve 1 uma mudança de função - Admissional, Mud. de Função e Demissional e por aí vai. As linhas serão mostradas conforme os exames realizados, se não tiver um determinado exame, ficará oculto.