Bom dia!
Prezados colegas, estou utilizando um código criado pelo colega Alexandre Neves aqui do fórum. Funciona perfeitamente, porém gostaria de acrescentar o intervalo do café da tarde.
Não tenho muito conhecimento e estou tentanto fazer na raça.
Seria possivel algum dos colegas me dar um auxílio?
Acrescentei um comentario nas linhas que eu já alterei. (" 'café tarde")
INI_Cafetarde
FIM_Cafetarde
Desde já agradeço ajuda!!
Prezados colegas, estou utilizando um código criado pelo colega Alexandre Neves aqui do fórum. Funciona perfeitamente, porém gostaria de acrescentar o intervalo do café da tarde.
Não tenho muito conhecimento e estou tentanto fazer na raça.
Seria possivel algum dos colegas me dar um auxílio?
Acrescentei um comentario nas linhas que eu já alterei. (" 'café tarde")
INI_Cafetarde
FIM_Cafetarde
Desde já agradeço ajuda!!
- Código:
Function TempoGasto(argDataInicial As Date, argHoraInicial As Date, argDataFinal As Date, argHoraFinal As Date) As Variant
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' código criado por Alexandre Neves, do Fórum MaximoAccess '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim dtData As Date
Dim inicioExpediente As Date, fimExpediente As Date
Dim INI_Cafemanha As Date, FIM_Cafemanha As Date
Dim inicioAlmoco As Date, fimAlmoco As Date
Dim INI_Cafetarde As Date, FIM_Cafetarde As Date 'café da tarde
Dim TempoPrimDia As Long, TempoUltDia As Long, totalExpediente As Long
Dim numeroDiasCompletos As Integer
If argDataInicial = argDataFinal And argHoraFinal < argHoraInicial Then
MsgBox "O fim não pode ser antes do início."
Exit Function
End If
'Configuração dos dados iniciais. Para personalizar
'basta alterar os valores a serem utilizados.
inicioExpediente = #7:00:00 AM#
INI_Cafemanha = #9:00:00 AM#
FIM_Cafemanha = #9:15:00 AM#
inicioAlmoco = #11:30:00 AM#
fimAlmoco = #12:30:00 PM#
INI_Cafetarde = #3:00:00 PM# 'tentativa acrescentar
FIM_Cafetarde = #3:15:00 PM# 'tentativa acrescentar
fimExpediente = #5:00:00 PM#
For dtData = argDataInicial To argDataFinal
If dtData = argDataInicial Then
If argDataInicial = argDataFinal Then
Select Case argHoraInicial
Case Is < inicioExpediente
Select Case argHoraFinal
Case Is < inicioExpediente
Case Is < INI_Cafemanha
TempoPrimDia = DateDiff("s", inicioExpediente, argHoraFinal)
Case Is < FIM_Cafemanha
TempoPrimDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
Case Is < inicioAlmoco
TempoPrimDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, argHoraFinal)
Case Is < fimAlmoco
TempoPrimDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
Case Is < INI_Cafetarde '[color=#ff3300]café tarde[/color]
TempoPrimDia = DateDiff("s", fimExpediente, argHoraFinal)
Case Is < FIM_Cafetarde 'café tarde
TempoPrimDia = DateDiff("s", fimExpediente, INI_Cafetarde)
Case Is < fimExpediente
TempoPrimDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = DateDiff("s", fimExpediente, INI_Cafetarde) 'café tarde
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafetarde, argHoraFinal) 'café tarde
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, argHoraFinal) 'desativado
Case Else
TempoPrimDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
End Select
Case Is < INI_Cafemanha
Select Case argHoraFinal
Case Is < INI_Cafemanha
TempoPrimDia = DateDiff("s", argHoraInicial, argHoraFinal)
Case Is < FIM_Cafemanha
TempoPrimDia = DateDiff("s", argHoraInicial, INI_Cafemanha)
Case Is < inicioAlmoco
TempoPrimDia = DateDiff("s", argHoraInicial, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, argHoraFinal)
Case Is < fimAlmoco
TempoPrimDia = DateDiff("s", argHoraInicial, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
Case Is < fimExpediente
TempoPrimDia = DateDiff("s", argHoraInicial, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, argHoraFinal)
Case Else
TempoPrimDia = DateDiff("s", argHoraInicial, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
End Select
Case Is < FIM_Cafemanha
Select Case argHoraFinal
Case Is < FIM_Cafemanha
Case Is < inicioAlmoco
TempoPrimDia = DateDiff("s", FIM_Cafemanha, argHoraFinal)
Case Is < fimAlmoco
TempoPrimDia = DateDiff("s", FIM_Cafemanha, inicioAlmoco)
Case Is < fimExpediente
TempoPrimDia = DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, argHoraFinal)
Case Else
TempoPrimDia = DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
End Select
Case Is < inicioAlmoco
Select Case argHoraFinal
Case Is < inicioAlmoco
TempoPrimDia = DateDiff("s", argHoraInicial, argHoraFinal)
Case Is < fimAlmoco
TempoPrimDia = DateDiff("s", argHoraInicial, inicioAlmoco)
Case Is < fimExpediente
TempoPrimDia = DateDiff("s", argHoraInicial, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, argHoraFinal)
Case Else
TempoPrimDia = DateDiff("s", argHoraInicial, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
End Select
Case Is < fimAlmoco
Select Case argHoraFinal
Case Is < fimAlmoco
Case Is < fimExpediente
TempoPrimDia = DateDiff("s", fimAlmoco, argHoraFinal)
Case Else
TempoPrimDia = DateDiff("s", fimAlmoco, fimExpediente)
End Select
Case Is < fimExpediente
Select Case argHoraFinal
Case Is < fimExpediente
TempoPrimDia = DateDiff("s", argHoraInicial, argHoraFinal)
Case Else
TempoPrimDia = DateDiff("s", argHoraInicial, fimExpediente)
End Select
End Select
Else
Select Case argHoraInicial
Case Is < inicioExpediente
TempoPrimDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
Case Is < INI_Cafemanha
TempoPrimDia = DateDiff("s", argHoraInicial, INI_Cafemanha)
TempoPrimDia = TempoPrimDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
Case Is < FIM_Cafemanha
TempoPrimDia = DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
Case Is < inicioAlmoco
TempoPrimDia = DateDiff("s", argHoraInicial, inicioAlmoco)
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
Case Is < fimAlmoco
TempoPrimDia = TempoPrimDia + DateDiff("s", fimAlmoco, fimExpediente)
Case Is < fimExpediente
TempoPrimDia = DateDiff("s", argHoraInicial, fimExpediente)
End Select
End If
ElseIf dtData = argDataFinal Then
Select Case argHoraFinal
Case Is < inicioExpediente
Case Is < INI_Cafemanha
TempoUltDia = DateDiff("s", inicioExpediente, argHoraFinal)
Case Is < FIM_Cafemanha
TempoUltDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
Case Is < inicioAlmoco
TempoUltDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
TempoUltDia = TempoUltDia + DateDiff("s", FIM_Cafemanha, argHoraFinal)
Case Is < fimAlmoco
TempoUltDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
TempoUltDia = TempoUltDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
Case Is < fimExpediente
TempoUltDia = DateDiff("s", inicioExpediente, INI_Cafemanha)
TempoUltDia = TempoUltDia + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
TempoUltDia = TempoUltDia + DateDiff("s", fimAlmoco, argHoraFinal)
End Select
Else
numeroDiasCompletos = numeroDiasCompletos + 1
End If
Next
totalExpediente = totalExpediente + DateDiff("s", inicioExpediente, INI_Cafemanha)
totalExpediente = totalExpediente + DateDiff("s", FIM_Cafemanha, inicioAlmoco)
totalExpediente = totalExpediente + DateDiff("s", fimAlmoco, fimExpediente)
TempoGasto = TempoPrimDia + numeroDiasCompletos * totalExpediente + TempoUltDia
TempoGasto = TempoGasto \ 3600 & "h" & TempoGasto \ 60 Mod 60 & "m" & TempoGasto Mod 60 & "s"
If Left(TempoGasto, 2) = "0h" Then TempoGasto = Mid(TempoGasto, 3)
If Right(TempoGasto, 3) = "m0s" Then TempoGasto = Mid(TempoGasto, 1, Len(TempoGasto) - 2)
If TempoGasto Like "*h0m*" Then TempoGasto = Mid(TempoGasto, 1, InStr(1, TempoGasto, "h")) & Mid(TempoGasto, InStr(TempoGasto, "m") + 1)
End Function