Ir para conteúdo
Fórum Script Brasil
  • 0

Cálculo Tempo de Atemdimento


danisantiago

Pergunta

Boa tarde,

Estou fazendo o cálculo de tempo de atendimento de chamados, porém nesse cálculo preciso desconsiderar o horário de almoço (12 as 13), ou seja, ao invés de 9h trabalhadas no dia, serão consideradas 8h. Fiz o calculo abaixo, porém não sei onde coloco o expurgo do tempo de almoço, algum tem uma ideia?

UltLinTempoAtendimento = Sheets(nomeWorksheet).Cells(Rows.Count, 18).End(xlUp).Row
    If UltLinTempoAtendimento < UltLinCod Then
    
        For i = UltLinTempoAtendimento + 1 To UltLinCod
        
            If Sheets(nomeWorksheet).Cells(i, 2) <> "" And Sheets(nomeWorksheet).Cells(i, 3) <> "" And Sheets(nomeWorksheet).Cells(i, 4) <> "" And Sheets(nomeWorksheet).Cells(i, 7) <> "" And Sheets(nomeWorksheet).Cells(i, 8) <> "" And Sheets(nomeWorksheet).Cells(i, 16) <> "" Then
                                   
                LinhaProblema = Sheets(nomeWorksheet).Cells(i, 2)
                dInitial = Sheets(nomeWorksheet).Cells(i, 3)
                hInitial = Sheets(nomeWorksheet).Cells(i, 4)
                dEnd = Sheets(nomeWorksheet).Cells(i, 7)
                hEnd = Sheets(nomeWorksheet).Cells(i, 8)
                Estado = Sheets(nomeWorksheet).Cells(i, 16)
                
                If Estado = "Rio de Janeiro" Then
                
                    If Weekday(dInitial) = 1 Then
                       dInitial = dInitial + 1
                       hInitial = 9 / 24
                    ElseIf Weekday(dInitial) = 7 Then
                         dInitial = dInitial + 2
                       hInitial = 9 / 24
                       
                    End If
                    
                    Do While Application.WorksheetFunction.NetworkDays(dInitial, dInitial, feriados) < 1
                        dInitial = dInitial + 1
                        hInitial = 9 / 24
                    Loop

                    If Weekday(dEnd) = 1 Then
                       dEnd = dEnd + 1
                       hEnd = 9 / 24
                    ElseIf Weekday(dEnd) = 7 Then
                        dEnd = dEnd + 2
                        hEnd = 9 / 24
                       
                    End If
                    
                    Do While Application.WorksheetFunction.NetworkDays(dEnd, dEnd, feriados) < 1
                        dEnd = dEnd + 1
                        hEnd = 9 / 24
                    Loop

                    If intDiasuteis = 0 Then
                        intDiasuteis = 1
                    End If
                    
                    If hInitial > 18 / 24 Then
                        dInitial = dInitial + 1
                        hInitial = 9 / 24
                    ElseIf hInitial < 9 / 24 Then
                        hInitial = 9 / 24
                    End If
                    
                    If hEnd > 18 / 24 Then
                        hEnd = 18 / 24
                    ElseIf hEnd < 9 / 24 Then
                        hEnd = 9 / 24
                    End If
                    
                    
                    
                    intDiasuteis = Application.WorksheetFunction.NetworkDays(dInitial, dEnd, feriados)
                    
                    dblHoras = Hour(hEnd) - Hour(hInitial)
                    dblMinutos = Minute(hEnd) - Minute(hInitial)
                    dblSegundos = Second(hEnd) - Second(hInitial)
                    
                    Sheets(nomeWorksheet).Cells(i, 18) = (intDiasuteis - 1) * 8 * 60 + dblHoras * 60 + dblMinutos + dblSegundos / 60
                    
                ElseIf Estado = "Maranhão" Then
                
                    If Weekday(dInitial) = 1 Then
                       dInitial = dInitial + 1
                       hInitial = 7 / 24
                    ElseIf Weekday(dInitial) = 7 Then
                         dInitial = dInitial + 2
                       hInitial = 7 / 24
                       
                    End If
                    
                    Do While Application.WorksheetFunction.NetworkDays(dInitial, dInitial, feriados) < 1
                        dInitial = dInitial + 1
                        hInitial = 7 / 24
                    Loop

                    If Weekday(dEnd) = 1 Then
                       dEnd = dEnd + 1
                       hEnd = 7 / 24
                    ElseIf Weekday(dEnd) = 7 Then
                        dEnd = dEnd + 2
                        hEnd = 7 / 24
                       
                    End If
                    
                    Do While Application.WorksheetFunction.NetworkDays(dEnd, dEnd, feriados) < 1
                        dEnd = dEnd + 1
                        hEnd = 7 / 24
                    Loop

                    If intDiasuteis = 0 Then
                        intDiasuteis = 1
                    End If
                    
                    If hInitial > 16 / 24 Then
                        dInitial = dInitial + 1
                        hInitial = 7 / 24
                    ElseIf hInitial < 7 / 24 Then
                        hInitial = 7 / 24
                    End If
                    
                    If hEnd > 16 / 24 Then
                        hEnd = 16 / 24
                    ElseIf hEnd < 7 / 24 Then
                        hEnd = 7 / 24
                    End If
                    
                    intDiasuteis = Application.WorksheetFunction.NetworkDays(dInitial, dEnd, feriados)
                    
                    dblHoras = Hour(hEnd) - Hour(hInitial)
                    dblMinutos = Minute(hEnd) - Minute(hInitial)
                    dblSegundos = Second(hEnd) - Second(hInitial)
                    
                    Sheets(nomeWorksheet).Cells(i, 18) = (intDiasuteis - 1) * 8 * 60 + dblHoras * 60 + dblMinutos + dblSegundos / 60
                End If
                End If
         Next
        
    End If
    
End Sub
 

obrigada.

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...