Funções de Data e Hora no VBA (Date, Time, Day, Month, Now, MonthName, Hour, DateDiff, DateAdd, Year, WeekDay, WeekDayName)

A Função Date

Retorna a data corrente do sistema, sem precisar de parâmetro.

Exemplo de código:

Sub Função_Date()

MsgBox Date()

End Sub

 A Função Time

 Retorna a hora corrente do sistema, sem precisar de parâmetro.

Exemplo de código:

Sub Função_Time()

MsgBox Time()

End Sub

 A Função Day

Retorna um número entre 1 e 31, indicando o dia do mês de um parâmetro informado.

Exemplo de código:

Sub Função_Day()

MsgBox Day(Date)

End Sub

 A Função Month

 Retorna um número entre 1 e 12, indicando o mês do ano de um parâmetro informado.

Exemplo de código:

Sub Função_Month()

MsgBox Month(Date)

End Sub

A Função Now

Retorna a hora e a data corrente do sistema, sem precisar de parâmetro.

Exemplo de código:

Sub Função_Now()

MsgBox Now()

End Sub

A Função MonthName

Esta Função recebe como parâmetro um número indicativo de um mês, retornando o nome correspondente por extenso ou de forma abreviada. A sintaxe é a seguinte: MonthName(número_do_mês) ou MonthName(número_do_mês, true) para nome abreviado.

Exemplo de código:

Sub Função_MonthName()

MsgBox MonthName(Month(Date))

End Sub

Ou ainda, com abreviação:

Sub Função_MonthName_abreviação()

MsgBox MonthName(Month(Date), True)

End Sub

Função Hour

Recebe uma hora como parâmetro e retorna um número entre 0 e 23, que indica a hora exata.

Exemplo de código:

Sub Função_Hour()

MsgBox Hour(Time)

End Sub

A Função DateDiff

Esta Função retorna o número de intervalos (em dias, trimestres, semestres, anos etc.) entre duas datas informadas. A sintaxe é a seguinte: DateDiff(intervalo, data1, data2).

Os valores para parâmetros de intervalo são os seguintes:

Parâmetro

Descrição

yyyy anos
q trimestres
m meses
y dias do ano (o mesmo que dias)
d dias
w semanas
ww semanas do ano (o mesmo que semanas)
h horas
n minutos
s segundos

Exemplo de código:

 Sub Função_DateDiff()

MsgBox DateDiff(“h”, “01/01/2008”, “13/05/2008”)

End Sub

 Ao ser executado, o código acima retornará uma caixa de mensagem com o valor 3192.

A Função DateAdd

 Os valores para parâmetros de intervalo são os seguintes:

Parâmetro

Descrição

yyyy anos
q trimestres
m meses
y dias do ano (o mesmo que dias)
d dias
w semanas
ww semanas do ano (o mesmo que semanas)
h horas
n minutos
s segundos

 Esta Função retorna uma data futura, com base em uma data informada. A sintaxe é a seguinte:

DateAdd(intervalo, número_de_intervalos, data), onde o intervalo é o tipo do período a ser acrescentado e o número_de_intervalos a quantidade.

Exemplo de código:

 Sub Função_DateAdd()

MsgBox DateAdd(“m”, “1000”, “13/05/2008”)

End Sub

 Ao ser executado, o código acima retornará uma caixa de mensagem com o seguinte resultado:

 13/9/2091

A Função Year

Retorna o ano de uma determinada data informada como parâmetro.

Exemplo de código:

 Sub Função_Year()

MsgBox Year(Date)

End Sub

 A Função WeekDay

 Retorna o dia da semana de uma determinada data informada como parâmetro. A sintaxe é a seguinte: WeekDay(data), onde Domingo será considerado o primeiro dia, ou WeekDay(data, prim_dia_semana), onde é indicado o dia da semana a ser considerado como o primeiro.

Exemplo de código:

Sub Função_WeekDay()

MsgBox WeekDay(“13/05/2008”)

End Sub

 Ao ser executado, o código acima retornará uma caixa de mensagem com o valor 3 como resultado.

 Ou ainda, com parâmetro de alteração do primeiro dia padrão (Domingo):

 Sub Função_WeekDay()

MsgBox WeekDay(“13/05/2008”,2)

End Sub

 Ao ser executado, o código acima retornará uma caixa de mensagem com o valor 2 como resultado.

 A Função WeekDayName

Retorna o nome da semana relacionado a um número informado como parâmetro, podendo ser abreviado, caso o segundo parâmetro da Função seja True.

Exemplo de código:

 Sub Função_WeekDayName()

MsgBox WeekDayName(“5”,True)

End Sub

Ao ser executado, o código acima retornará uma caixa de mensagem com o texto qui.

Abs, Dr. E

P.S. Gostaria de pedir desculpas, mas infelizmente não estou conseguindo responder todos os e-mails com dúvidas que venho recebendo. Por isso, peço que não usem o espaço de comentários do post para enviar dúvidas.