Um pouco mais sobre datas (Parte 2)
Olá caros leitores.
Dando continuidade a esta série de artigos sobre trabalhos com datas, hoje vamos construir uma função que nos informa quantos sábados e domingos temos em um determinado periodo de datas.
Para quem ainda não leu o artigo anterior desta série, pode fazê-lo pelo link abaixo:
II – Saber quantos sábados existem entre duas datas informadas.
Supondo que temos aulas de inglês todos os sábados e queremos saber quantos sábados (aulas) ainda teremos até o final do ano. Temos duas datas, inicial (hoje: 1/11/2009) e final (31/12/2009).
Podemos montar a seguinte função.
Function TotalDeSabadosNoPeriodo(dDataInicial As Date, dDataFinal As Date) As Integer Dim TotalDeDias As Integer Dim TotalDeDiasNoPeriodo As Integer Dim iContDia As Integer Dim dDataAnalisada As Date TotalDeDias = 1 + DateDiff("d", dDataInicial, dDataFinal) dDataAnalisada = dDataInicial TotalDeDiasNoPeriodo = 0 For iContDia = 1 To TotalDeDias If Weekday(dDataAnalisada) = vbSaturday Then TotalDeDiasNoPeriodo = TotalDeDiasNoPeriodo + 1 End If dDataAnalisada = DateAdd("d", 1, dDataAnalisada) Next iContDia TotalDeSabadosNoPeriodo = TotalDeDiasNoPeriodo End Function |
Para chamar a função, fazemos assim:
Msgbox TotalDeSabadosNoPeriodo(“1/11/2009″,”31/12/2009″)
O resultado será 8.
A função interna que nos ajuda a descobrir o dia da semana é a função Weekday. Nossa estratégia de algorÃtimo é fazer um loop percorrendo todas as datas e analisando quais delas são sábado e incrementando num contador. Simples né.
Detalhe: Esta função pode ser chamada diretamente na célula, ok! Substituindo as datas fixas que foram informadas no exemplo, por referências a outras células que contenham as datas inicial e final, atualizando, assim, dinâmicamente quando seus valores forem modificados.III – Saber quantos domingos existem entre duas datas informadas.
Não há grandes diferenças para se obter esta informação com referência aos domingos. O detalhe está na propriedade retornada pela função Weekday, que agora será VbSunday.
Utilizando as mesmas datas do exeplo anterior, temos: duas datas, inicial (hoje: 1/11/2009) e final (31/12/2009).
Podemos montar a seguinte função.
Function TotalDeDomingosNoPeriodo(dDataInicial As Date, dDataFinal As Date) As Integer Dim TotalDeDias As Integer Dim TotalDeDiasNoPeriodo As Integer Dim iContDia As Integer Dim dDataAnalisada As Date TotalDeDias = 1 + DateDiff("d", dDataInicial, dDataFinal) dDataAnalisada = dDataInicial TotalDeDiasNoPeriodo = 0 For iContDia = 1 To TotalDeDias If Weekday(dDataAnalisada) = vbSunday Then TotalDeDiasNoPeriodo = TotalDeDiasNoPeriodo + 1 End If dDataAnalisada = DateAdd("d", 1, dDataAnalisada) Next iContDia TotalDeDomingosNoPeriodo = TotalDeDiasNoPeriodo End Function |
Para chamar a função, fazemos assim:
Msgbox TotalDeDomingosNoPeriodo(“1/11/2009″,”31/12/2009″)
O resultado será 9.
Até a próxima, amigos.




Deixar um comentário