VBA – Função DateAdd

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 29, 2023

 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:

adicionar vinte dias

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

adicionar vinte meses

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:

vba dateadd syntax

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:

adicionar referencia celula excel

 

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

saidas diferentes formatos

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