VBA – Função DateDiff

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on September 10, 2023

DateDiff – Descrição

Retorna a diferença entre dois valores de data, com base no intervalo especificado.

Exemplos Simples de DateDiff

Aqui está um exemplo simples de DateDiff:

Sub DateDiff_Ano()
 MsgBox DateDiff("yyyy", #1/1/2019#, #8/1/2021#)
End Sub

Esse código retornará 2. Essa é a diferença de ano (indicada por “yyyy”) entre dois dias. (2021 – 2019 = 2)

No exemplo acima, alterando as posições de data1 e data2.

Sub DateDiff_Ano()
 MsgBox DateDiff("yyyy", #8/1/2021#, #1/1/2019#)
End Sub

Esse código retornará -2.

Sintaxe de DateDiff

No editor do VBA, você pode digitar “DateDiff(” para ver a sintaxe da função DateDiff

A função DateDiff contém 5 argumentos:

Interval (Intervalo): Unidade de tempo (dias, meses, anos, etc.). Digite como uma cadeia de caracteres (ex.: “m” para Mês).

Configuração Descrição
yyyy Ano
q Trimestre
m Mês
y Dia do ano
d Dia
w Dia da semana
ww Semana
h Hora
n Minuto
s Segundo

Date1, Date2 (Data1, Data2): Duas datas que você deseja usar no cálculo.

FirstDayOfWeek (Primeiro dia da semana): Uma constante que especifica o primeiro dia da semana. Isso é opcional. Se não for especificado, será considerado domingo.

Constante Valor Descrição
vbUseSystem 0 Usa a configuração da API NLS.
vbSunday 1 Domingo (padrão)
vbMonday 2 Segunda-feira
vbTuesday 3 Terça-feira
vbWednesday 4 Quarta-feira
vbThursday 5 Quinta-feira
vbFriday 6 Sexta-feira
vbSaturday 7 Sábado

FirstWeekOfYear (Primeira semana do ano): Uma constante que especifica a primeira semana do ano. Isso é opcional. Se não for especificada, presume-se que a primeira semana seja a semana em que ocorre o dia 1º de janeiro.

Constante Valor Descrição
vbUseSystem 0 Usa a configuração da API NLS.
vbFirstJan1 1 Iniciar com a semana em que ocorre o dia 1º de janeiro (padrão).
vbFirstFourDays 2 Começa com a primeira semana que tem pelo menos quatro dias no ano novo.
vbFirstFullWeek 3 Começa com a primeira semana completa do ano.

Exemplos da Função DateDiff do Excel VBA

Referência a Datas

Para começar, demonstraremos diferentes maneiras de fazer referência a datas usando a função DateDiff do VBA.

Cada uma dessas funções DateDiff produz o mesmo resultado:

Sub DateDiff_Referencia_a_Datas()

 MsgBox DateDiff("m", #4/1/2019#, #8/1/2021#)

 MsgBox DateDiff("m", DateSerial(2019, 4, 1), DateSerial(2021, 8, 1))

 MsgBox DateDiff("m", DateValue("Abril 1, 2019"), DateValue("Agosto 1, 2021"))

End Sub

Ou você pode fazer referência a células que contenham datas:

uso datediff celula

Sub DateDiff_Referencia_a_Datas_Celula()

 MsgBox DateDiff("m", Range("C2").Value, Range("C3").Value)
    
End Sub

Ou criar e referenciar variáveis de data:

Sub DateDiff_Variaveis()

 Dim dt1 As Date, dt2 As Date
 dt1 = #4/1/2019#
 dt2 = #8/1/2021#

 MsgBox DateDiff("m", dt1, dt2)

End Sub

Uso de Diferentes Unidades de Intervalo

Trimestres

Sub DateDiff_Trimestres()
 MsgBox "o número de trimestres: " & DateDiff("q", #1/1/2019#, #1/1/2021#)
End Sub

Meses

Sub DateDiff_Meses()
 MsgBox "o número de meses: " & DateDiff("m", #1/1/2019#, #1/1/2021#)
End Sub

Dias

Sub DateDiff_Dias()
 MsgBox "o número de dias: " & DateDiff("d", #1/1/2019#, #1/1/2021#)
End Sub

Semanas

Sub DateDiff_Semanas()
 MsgBox "o número de semanas: " & DateDiff("w", #1/1/2019#, #1/1/2021#)
End Sub

Horas

Sub DateDiff_Horas()
 Dim dt1 As Date
 Dim dt2 As Date
 Dim nDiff As Long
    
 dt1 = #8/14/2019 9:30:00 AM#
 dt2 = #8/14/2019 1:00:00 PM#
    
 nDiff = DateDiff("h", dt1, dt2)

 MsgBox "horas: " & nDiff
End Sub

Minutos

Sub DateDiff_Minutos()
 MsgBox "minutos: " & DateDiff("n", #8/14/2019 9:30:00 AM#, #8/14/2019 9:35:00 AM#)
End Sub

Segundos

Sub DateDiff_Segundos()
 MsgBox "segundos: " & DateDiff("s", #8/14/2019 9:30:10 AM#, #8/14/2019 9:30:22 AM#)
End Sub
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA