Olá amigos do forum....
Gostaria de um auxilio para resolver este código. Está funcionando muito bem, salvo que conta um dia a menos que o desejado, por exemplo:
Data Final - Data Inicio = Resultado Esperado = X /Resultado da Formula = Y
03/06/2019 - 03/06/2019 = Resultado Esperado = 0 / Resultado da Formula = 0 > Correto
04/06/2019 - 03/06/2019 = Resultado Esperado = 1 / Resultado da Formula = 0 > Aqui começa a diferença
05/06/2019 - 03/06/2019 = Resultado Esperado = 2 / Resultado da Formula = 1
06/06/2018 - 03/06/2019 = Resultado Esperado = 3 / Resultado da Formula = 2
Anexo o arquivo para facilitar.
Gostaria de um auxilio para resolver este código. Está funcionando muito bem, salvo que conta um dia a menos que o desejado, por exemplo:
Data Final - Data Inicio = Resultado Esperado = X /Resultado da Formula = Y
03/06/2019 - 03/06/2019 = Resultado Esperado = 0 / Resultado da Formula = 0 > Correto
04/06/2019 - 03/06/2019 = Resultado Esperado = 1 / Resultado da Formula = 0 > Aqui começa a diferença
05/06/2019 - 03/06/2019 = Resultado Esperado = 2 / Resultado da Formula = 1
06/06/2018 - 03/06/2019 = Resultado Esperado = 3 / Resultado da Formula = 2
Anexo o arquivo para facilitar.
- Código:
Option Compare Database
Option Explicit
Public Function DTS(dtInicio As Date, dtFim As Date, Optional HojeTb As Boolean = False, Optional UltTb As Boolean = False) As Integer
'....................................................................
' Nome: DTS
' Entradas: dtInicio As Date
' dtFim As Date
' HojeTb As Boolean
' UltTb As Boolean
' Saída: Integer
' Autor: Arvin Meyer
' Data: Maio 5,2002
' Comentário: Aceita duas datas e devolve o número de dias úteis
' entre elas. Note-se que esta função considera os feriados
' do período. Ela exige a existência de uma tabela chamada
' tblFeriados com um campo, no formato data, chamado FerData.
' Se HojeTb = True, a data inicial também será considerada.
' Se UltTb = true, a data final também será considerada.
'....................................................................
On Error GoTo Err_DTS
Dim intCount As Integer
Dim rst As DAO.Recordset
Dim DB As DAO.Database
Set DB = CurrentDb
Set rst = DB.OpenRecordset("SELECT [FerData] FROM tblFeriados", dbOpenSnapshot)
If Not HojeTb Then
dtInicio = dtInicio + 1
End If
' Se desejar contar a data de início, passe True em HojeTb
intCount = 0
If UltTb Then
Do While dtInicio <= dtFim
rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
If rst.NoMatch Then intCount = intCount + 1
End If
dtInicio = dtInicio + 1
Loop
Else
Do While dtInicio < dtFim
rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
If rst.NoMatch Then intCount = intCount + 1
End If
dtInicio = dtInicio + 1
Loop
End If
DTS = intCount
Exit_DTS:
Exit Function
Err_DTS:
Select Case Err
Case Else
MsgBox Err.Description
Resume Exit_DTS
End Select
End Function
'*********** Code End **************
- Anexos
- DiasUteisTrabalhados1.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (26 Kb) Baixado 37 vez(es)