Nesta série de artigos vou explicar um pouco como obter informações importantes e específicas sobre as datas. O meu objetivo será desenvolver funções que retornem resultados que são necessários em diversas situações para cálculos em nossas planilhas. Um exemplo disso é quando precisamos saber qual o último dia de um mês. Para qualquer mês, já sabemos que podem ter 30 ou 31 dias, exceto fevereiro, que pode variar entre 28 ou 29 dias, conforme o ano. Como podemos definir isso? Outro caso é para sabermos quantos dias úteis existem em determinado mês. Para isso, precisamos excluir os sábados, domingos e feriados. E vai a pergunta, como identificar estes dias (finais de semanas ou feriados)?
São assuntos como esses que abordaremos nestes artigos. Garanto a você, caro leitor, que estas dicas te ajudarão muito, pois são muito usuais.
I – Identificar quantos dias tem cada mês (ênfase em descobrir o mês de fevereiro).
Bem, para começar vamos escrever os meses e seu total de dias.
| Mês | Total de Dias |
| Janeiro | 31 |
| Fevereiro | 28 ou 29 |
| Março | 31 |
| Abril | 30 |
| Maio | 31 |
| Junho | 30 |
| Julho | 31 |
| Agosto | 31 |
| Setembro | 30 |
| Outubro | 31 |
| Novembro | 30 |
| Dezembro | 31 |
Observamos, então, que o único mês que precisamos nos preocupar é o mês de fevereiro, pois, apenas este tem o total de dias variável. Se não fosse por este mês, poderíamos apenas, fazer alguma instrução select, ou posicioná-los em um array, ou ainda, a nível de fórmula, montarmos alguns SE.
Como nosso intuito neste site é aprendermos mais profundamente as funcionalidade do Excel, podemos incrementar esta função de maneira mais profissional, até porque, desta maneira, ela poderá ser adaptada e utilizada por outras funções internamente.
Esta função é simples, mas precisa de atenção para perceber os detalhes. Vamos construí-la:
Vá ao construtor avançado de Macros (ALT+F11) e adicione um Módulo ao projeto.
Private Function fnUltimoDiaDoMes(iAno As Integer, iMes As Integer, Optional iDia As Integer = 1) As Integer
Dim arrayMesesUltimoDia As Variant
arrayMesesUltimoDia = Array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
If iMes = 2 Then
If IsDate("29/2/" & iAno) Then
fnUltimoDiaDoMes = 29
Else
fnUltimoDiaDoMes = 28
End If
Else
fnUltimoDiaDoMes = arrayMesesUltimoDia(iMes)
End If
End Function
Você pode chamar a função assim, supondo que queira informação do mês 2/2009, por exemplo:
Msgbox fnUltimoDiaDoMes(2009,2) // O resultado será 28.
Outros datas:
Msgbox fnUltimoDiaDoMes(2012,2) // O resultado será 29.
Msgbox fnUltimoDiaDoMes(2009,4) // O resultado será 30.
Msgbox fnUltimoDiaDoMes(2010,12) // O resultado será 31.
Msgbox fnUltimoDiaDoMes(2009,12,25) // O resultado será 31.
Explicando. Nesta função deve ser informado o ano, o mês, e, opcionalmente, a data, caso deseje. Enfim, bem simples e funcional.
No próximo artigo, vamos incrementá-la adicionando outras funções que dependerão dela.
Um abraço e espero você.




[...] Um pouco mais sobre datas (Parte 1) [...]
[...] Um pouco mais sobre datas (Parte 1) [...]
[...] Um pouco mais sobre datas (Parte 1) [...]
[...] Um pouco mais sobre datas – Parte 1 [...]