VBA – Função DateDiff
In this Article
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:
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