VBA – Função DateAdd
In this Article
DateAdd Descrição
A função DateAdd do VBA permite adicionar (ou subtrair) dias, meses, anos, horas, trimestres etc. a datas ou horas.
Exemplos simples de DateAdd
Aqui está um exemplo simples de DateAdd:
Sub DateAdd_Dia()
MsgBox DateAdd("d", 20, #4/1/2021#)
End Sub
Esse código adicionará 20 dias (indicados por “d”) à data 01/04/2021:
Em vez disso, podemos alterar o argumento Intervalo de “d” para “m” para adicionar 20 meses à data 01/04/2021:
Sub DateAdd_Mes()
MsgBox DateAdd("m", 20, #4/1/2021#)
End Sub
Em vez de exibir a data em uma caixa de mensagem, podemos atribuí-la a uma variável:
Sub DateAdd_Dia2()
Dim dt as Date
dt = DateAdd("d", 20, #4/1/2021#)
MsgBox dt
End Sub
Sintaxe de DateAdd
No editor do VBA, você pode digitar “DateAdd(” para ver a sintaxe da função DateAdd:
A função DateAdd contém 3 argumentos:
Interval (Intervalo): Unidade de tempo (dias, meses, anos, etc.). Digite como string. (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 |
Number (Número): Valor numérico que representa o número de unidades de tempo a serem adicionadas. (ex.: 20 para adicionar 20 unidades)
Date (Data): Data inicial. Consulte a próxima seção.
Exemplos da Função DateAdd do Excel VBA
Referência a Datas
Para começar, demonstraremos diferentes maneiras de fazer referência a datas usando a função DateAdd do VBA.
Cada uma dessas funções DateAdd produz o mesmo resultado:
Sub DateAdd_ReferenciaADatas()
MsgBox DateAdd("m", 2, #4/1/2021#)
MsgBox DateAdd("m", 2, DateSerial(2021, 4, 1))
MsgBox DateAdd("m", 2, DateValue("Abril 1, 2021"))
End Sub
Ou você pode fazer referência a uma célula que contenha uma data:
Sub DateAdd_ReferenciaADatas_Celula()
MsgBox DateAdd("m", 2, Range("C2").Value)
End Sub
Ou criar e referenciar uma variável de data:
Sub DateAdd_Variavel()
Dim dt As Date
dt = #4/1/2021#
MsgBox DateAdd("m", 2, dt)
End Sub
Adicionar ou Subtrair Datas
Já mostramos como adicionar a uma data:
Sub DateAdd_Dia2()
Dim dt as Date
dt = DateAdd("d", 20, #4/1/2021#)
MsgBox dt
End Sub
Você pode subtrair de datas usando um número negativo (por exemplo, -20 em vez de 20):
Sub DateAdd_Dia()
Dim dt as Date
dt = DateAdd("d", -20, #4/1/2021#)
MsgBox dt
End Sub
Adição de Diferentes Unidades de Tempo
Anos
Sub DateAdd_Anos()
MsgBox DateAdd("yyyy", 4, #4/1/2021#)
End Sub
Trimestre
Sub DateAdd_Trimestres()
MsgBox DateAdd("q", 2, #4/1/2021#)
End Sub
Mês
Sub DateAdd_Meses()
MsgBox DateAdd("m", 2, #4/1/2021#)
End Sub
Dia do Ano
Sub DateAdd_DiaDoAno()
MsgBox DateAdd("y", 2, #4/1/2021#)
End Sub
Dia
Sub DateAdd_Dia3()
MsgBox DateAdd("d", 2, #4/1/2021#)
End Sub
Dia da Semana
Sub DateAdd_DiaDaSemana()
MsgBox DateAdd("w", 2, #4/1/2021#)
End Sub
Semana
Sub DateAdd_Semanas()
MsgBox DateAdd("ww", 2, #4/1/2021#)
End Sub
Adicionar ao Dia de Hoje
Esses exemplos adicionarão unidades de tempo ao dia de hoje usando a função Date.
Sub DateAdd_Ano_Teste()
Dim dtHoje As Date
Dim dtPosterior As Date
dtHoje = Date
dtPosterior = DateAdd("yyyy", 1, dtHoje)
MsgBox "Um ano depois é " & dtPosterior
End Sub
Sub DateAdd_Trimestre_Teste()
MsgBox "2 trimestres depois é " & DateAdd("q", 2, Date)
End Sub
Adição e Subtração de Tempo
A função DateAdd também funciona com Tempo. Veja a seguir alguns exemplos de adição (ou subtração) de tempo a uma hora:
Hora
Este exemplo adicionará 2 horas a uma hora:
Sub DateAdd_Hora()
MsgBox DateAdd("h", 2, #4/1/2021 6:00:00#)
End Sub
Minutos
Este exemplo subtrairá 120 minutos da hora atual:
Sub DateAdd_Minuto_Subtrair()
MsgBox DateAdd("n", -120, Now)
End Sub
Segundo
Sub DateAdd_Segundos()
MsgBox DateAdd("s", 2, #4/1/2021 6:00:00#)
End Sub
Formatação de Datas
Quando datas (ou horas) são exibidas no Excel, em UserForms ou em caixas de mensagem, você deve indicar como as datas devem ser exibidas usando a função Format. Incluímos alguns exemplos abaixo:
Sub FormatarDatasHoras()
'Retorna a data e a hora atuais
dt = Now()
'ex. 02/07/2021
Range("B2") = Format(dt, "mm/dd/yyyy")
'ex. Julho 2, 2021
Range("B3") = Format(dt, "mmmm d, yyyy")
'ex. 02/07/2021 09:10
Range("B4") = Format(dt, "mm/dd/yyyy hh:mm")
'ex. 7.2.21 9:10 AM
Range("B5") = Format(dt, "m.d.yy h:mm AM/PM")
End Sub