none
DIA SEMANA RRS feed

  • Pergunta

  • Gostaria de saber sobre uma macro que verifica o dia da semana e bloqueia as demais

    ex.:

    Hoje segunda-feira --> estaria liberada e bloquearia as demais ( terça, quarta, quinta, sexta, sabado e domingo), porém teriamos um problema, que seria o seguinte.

             --> como é uma casa noturna o problema que a casa abre as 22:00 e fecha as 05:00 do dia seguinte.

             --> o dia da semana é identificado nas abas da planilha.

             --> Abas ( SEG, TER, QUA, QUI, SEX, SAB E DOM.)

                                --> como fazer isso, por favor me ajudem, em excel vba.

    Obrigado 

    Carlos H. Cordeiro


    • Editado CHCORDEIRO segunda-feira, 12 de dezembro de 2016 19:56
    segunda-feira, 12 de dezembro de 2016 19:52

Todas as Respostas

  • Boa tarde CHCORDEIRO,

    coloque o seguinte código em um módulo:

    Sub funcionamentoCasa()
    
        Call OcultarPlanilhas
        
        Select Case Weekday(Date)
            
            'DOMINGO
            Case Is = 1
                If Time >= "00:00:00" And Time <= "05:00:00" Then
                    Sheets("SAB").Visible = True
                ElseIf Time >= "22:00:00" And Time <= "23:59:00" Then
                    Sheets("DOM").Visible = True
                Else
                    escolha = MsgBox("A Casa não está aberta! Deseja exibir todos os dias?", vbYesNo)
                    If escolha = 6 Then Call exibirPlanilhas
                End If
            
            'SEGUNDA
            Case Is = 2
                If Time >= "00:00:00" And Time <= "05:00:00" Then
                    Sheets("DOM").Visible = True
                ElseIf Time >= "22:00:00" And Time <= "23:59:00" Then
                    Sheets("SEG").Visible = True
                Else
                    escolha = MsgBox("A Casa não está aberta! Deseja exibir todos os dias?", vbYesNo)
                    If escolha = 6 Then Call exibirPlanilhas
                End If
            
            'TERÇA
            Case Is = 3
                If Time >= "00:00:00" And Time <= "05:00:00" Then
                    Sheets("SEG").Visible = True
                ElseIf Time >= "22:00:00" And Time <= "23:59:00" Then
                    Sheets("TER").Visible = True
                Else
                    escolha = MsgBox("A Casa não está aberta! Deseja exibir todos os dias?", vbYesNo)
                    If escolha = 6 Then Call exibirPlanilhas
                End If
    
            'QUARTA
            Case Is = 4
                If Time >= "00:00:00" And Time <= "05:00:00" Then
                    Sheets("TER").Visible = True
                ElseIf Time >= "22:00:00" And Time <= "23:59:00" Then
                    Sheets("QUA").Visible = True
                Else
                    escolha = MsgBox("A Casa não está aberta! Deseja exibir todos os dias?", vbYesNo)
                    If escolha = 6 Then Call exibirPlanilhas
                End If
                
            'QUINTA
            Case Is = 5
                If Time >= "00:00:00" And Time <= "05:00:00" Then
                    Sheets("QUA").Visible = True
                ElseIf Time >= "22:00:00" And Time <= "23:59:00" Then
                    Sheets("QUI").Visible = True
                Else
                    escolha = MsgBox("A Casa não está aberta! Deseja exibir todos os dias?", vbYesNo)
                    If escolha = 6 Then Call exibirPlanilhas
                End If
                
            'SEXTA
            Case Is = 6
                If Time >= "00:00:00" And Time <= "05:00:00" Then
                    Sheets("QUI").Visible = True
                ElseIf Time >= "22:00:00" And Time <= "23:59:00" Then
                    Sheets("SEX").Visible = True
                Else
                    escolha = MsgBox("A Casa não está aberta! Deseja exibir todos os dias?", vbYesNo)
                    If escolha = 6 Then Call exibirPlanilhas
                End If
                
            'SÁBADO
            Case Is = 7
                If Time >= "00:00:00" And Time <= "05:00:00" Then
                    Sheets("SEX").Visible = True
                ElseIf Time >= "22:00:00" And Time <= "23:59:00" Then
                    Sheets("SAB").Visible = True
                Else
                    escolha = MsgBox("A Casa não está aberta! Deseja exibir todos os dias?", vbYesNo)
                    If escolha = 6 Then Call exibirPlanilhas
                End If
                
        End Select
                
    End Sub
    
    Sub OcultarPlanilhas()
        '2 = Oculta e não reexibe
        Sheets("DOM").Visible = 2
        Sheets("SEG").Visible = 2
        Sheets("TER").Visible = 2
        Sheets("QUA").Visible = 2
        Sheets("QUI").Visible = 2
        Sheets("SEX").Visible = 2
        Sheets("SAB").Visible = 2
    End Sub
    
    Sub exibirPlanilhas()
        '-1 = exibe
        Sheets("DOM").Visible = -1
        Sheets("SEG").Visible = -1
        Sheets("TER").Visible = -1
        Sheets("QUA").Visible = -1
        Sheets("QUI").Visible = -1
        Sheets("SEX").Visible = -1
        Sheets("SAB").Visible = -1
    End Sub

    Depois chame a rotina no evento open do Workbook:

    Private Sub Workbook_Open()
        Call funcionamentoCasa
    End Sub

    Obs: Coloque uma Planilha a mais, além das dos dias da semana (MENU, INICIO, por exemplo), pois, e pelo menos uma planilha precisa ser exibida.

    quarta-feira, 14 de dezembro de 2016 18:09