Olá Pessoal,
Preciso projetar continuamente os dias uteis de cada mês ( jan, fev, mar,... dez).
Aí pesquisei na net(aqui mesmo) e achei a função abaixo:
Public Function DiasUteis(dtInicio As Variant, dtFinal As Variant) As Integer
Dim intSemanas As Integer
Dim varDataCont As Variant
Dim intFimDias As Integer
dtInicio = DateValue(dtInicio)
dtFinal = DateValue(dtFinal)
intSemanas = DateDiff("w", dtInicio, dtFinal)
varDataCont = DateAdd("ww", intSemanas, dtInicio)
intFimDias = 0
Do While varDataCont < dtFinal
If Format(varDataCont, "ddd") <> "Sun" And _
Format(varDataCont, "ddd") <> "Sat" Then
intFimDias = intFimDias + 1
End If
varDataCont = DateAdd("d", 1, varDataCont)
Loop
DiasUteis = intSemanas * 5 + intFimDias
End Function
Se eu informo :
strDia = "01"
strMes = "01"
strAno = "2007"
strDia2 = "31"
strMes2 = "01"
strAno2 = "2007"
strData = CVDate(strDia & "/" & strMes & "/" & strAno
strData2 = CVDate(strDia2 & "/" & strMes2 & "/" & strAno2
strNroDias = DiasUteis2(strData, strData2)
O resultado é 23 dias uteis
Mais seu eu coloco dastas do ano 2008 :
Se mes de Janeiro :
strDia = "01"
strMes = "01"
strAno = "2008"
strDia2 = "31"
strMes2 = "01"
strAno2 = "2008"
O resultado é 22 + o correto seria 23 dias.
Se Fevereiro :
O resultado sai 20 + o correto seria 21 dias.
Se Março :
O resultado sai 22 + o correto seria 21 dias.
Se Abril:
o resultado sai 21 + o correto seria 22 dias.
Sempre há uma diferença a maior ou a menor... Eu tenho a impressão que apesar de eu informar datas futuras (2008) a função calcula sobre 2007.
Será que tem aguma coisa a ver com o ano Bissexto.
Agradeço qualquer ajuda.
Abraço
JGD