Funções de dados em VBA
In this Article
- Função VBA Date
- Função VBA Now
- Função VBA Time
- Função VBA DateAdd
- Função VBA DateDiff
- Função VBA DatePart
- Função VBA DateSerial
- Função VBA DateValue
- Função VBA Day
- Função VBA Hour
- Função VBA Minute
- Função VBA Second
- Função VBA Month
- Função VBA MonthName
- Função VBA TimeSerial
- Função VBA TimeValue
- Função VBA Weekday
- Função VBA WeekdayName
- Função VBA Year
- Comparação de datas no VBA
Este tutorial abordará as diferentes funções de data incorporadas no VBA.
Função VBA Date
Pode utilizar a função Date para devolver a data atual.
A sintaxe da função Date é Date(). Ela não tem argumentos.
O código seguinte mostra-lhe como utilizar a função Date:
Sub UsandoFuncaoDate()
Dim aData As Date
aData = Date()
Debug.Print aData
End Sub
O resultado mostrado na Janela Imediata é:
Função VBA Now
Pode utilizar a função Now para devolver a data e a hora atuais.
A sintaxe da função Now é Now(). Ela não tem argumentos.
O código a seguir mostra como usar a função Now:
Sub UsandoFuncaoNow()
Dim aData As Date
aData = Now()
Debug.Print aData
End Sub
O resultado é:
Função VBA Time
Pode utilizar a função Time para devolver a hora atual.
A sintaxe da função Time é Time(). Ela não tem argumentos.
O código seguinte mostra como utilizar a função Time:
Sub UsandoFuncaoTime()
Dim aData As Date
aData = Time()
Debug.Print aData
End Sub
O resultado é:
Função VBA DateAdd
É possível utilizar a função DateAdd para adicionar um intervalo de data/hora a uma data ou hora, e a função devolverá a data/hora resultante.
A sintaxe da função DateAdd é:
DateAdd(Intervalo, Número, Data) onde:
- Intervalo – Uma string que especifica o tipo de intervalo a ser usado. O intervalo pode ser um dos seguintes valores:
“d” – dia
“ww” – semana
“w” – dia da semana
“m” – mês
“q” – trimestre
“yyyy” – ano
“y” – dia do ano
“h” – hora
“n” – minuto
“s” – segundo
- Número – O número de intervalos que pretende adicionar à data/hora original.
- Data – A data/hora original.
Nota: Quando utilizar datas no seu código, é necessário colocá-la entre # ou aspas.
O código seguinte mostra como utilizar a função DateAdd:
Sub UsandoFuncaoDateAdd()
Dim DataPosterior As Date
DataPosterior = DateAdd("m", 10, "11/12/2019")
Debug.Print DataPosterior
End Sub
O resultado é:
Função VBA DateDiff
Você pode utilizar a função DateDiff para obter a diferença entre duas datas, com base num intervalo de tempo especificado.
A sintaxe da função DateDiff é:
DateDiff(Intervalo, Data1, Data2, [PrimeiroDiaDaSemana], [PrimeiraSemanaDoAno]) onde:
- Intervalo – Uma string que especifica o tipo de intervalo a ser usado. O intervalo pode ser um dos seguintes valores:
“d” – dia
“ww” – semana
“w” – dia da semana
“m” – mês
“q” – trimestre
“yyyy” – ano
“y” – dia do ano
“h” – hora
“n” – minuto
“s” – segundo
- Data1 – Um valor de data que representa a data anterior.
- Date2 – Um valor de data que representa a data posterior.
- PrimeiroDiaDaSemana (Opcional) – Uma constante que especifica o dia da semana que a função deve usar como o primeiro dia da semana. Se estiver em branco, o domingo é utilizado como o primeiro dia da semana. PrimeiroDiaDaSemana pode ser um dos seguintes valores:
-vbSunday – utiliza o domingo como o primeiro dia da semana.
-vbMonday – utiliza a segunda-feira como o primeiro dia da semana.
-vbTuesday – utiliza a terça-feira como o primeiro dia da semana.
-vbWednesday – utiliza quarta-feira como o primeiro dia da semana.
-vbThursday – utiliza quinta-feira como o primeiro dia da semana.
-vbFriday – utiliza sexta-feira como o primeiro dia da semana.
-vbSaturday – utiliza Sábado como o primeiro dia da semana.
-vbUseSystemDayOfTheWeek – utiliza o primeiro dia da semana que é especificado pelas definições do seu sistema.
- PrimeiraSemanaDoAno (Opcional) – Uma constante que especifica a primeira semana do ano. Se estiver em branco, a semana de 1 de Janeiro é utilizada como a primeira semana do ano. Firstweekofyear pode ser um dos seguintes valores:
-vbFirstJan1 – utiliza a semana que contém o dia 1 de Janeiro.
-vbFirstFourDays – utiliza a primeira semana que contém pelo menos quatro dias no novo ano.
-vbFirstFullWeek – utiliza a primeira semana completa do ano.
-vbSystem – utiliza a primeira semana do ano conforme especificado pelas definições do sistema.
O código a seguir mostra como usar a função DateDiff:
Sub UsandoFuncaoDateDiff()
Dim aDiferencaEntreDuasDatas As Long
aDiferencaEntreDuasDatas = DateDiff("q", "11/11/2010", "10/12/2012")
Debug.Print aDiferencaEntreDuasDatas
End Sub
O resultado é:
Função VBA DatePart
Pode utilizar a função DatePart para devolver uma parte (dia, semana, trimestre, mês, etc.) de uma determinada data.
A sintaxe da função DatePart é:
DatePart(Intervalo, Data,[PrimeiroDiaDaSemana], [PrimeiraSemanaDoAno]) onde:
- Intervalo – Uma cadeia de caracteres que especifica a parte da data a ser retornada. O intervalo pode ser um dos seguintes valores:
“d” – dia
“ww” – semana
“w” – dia da semana
“m” – mês
“q” – trimestre
“yyyy” – ano
“y” – dia do ano
“h” – hora
“n” – minuto
“s” – segundo
- Data – A data da qual pretende que a função devolva uma parte.
- PrimeiroDiaDaSemana (Opcional) – Uma constante que especifica o dia da semana que a função deve utilizar como o primeiro dia da semana. Se estiver em branco, o domingo é utilizado como o primeiro dia da semana. PrimeiroDiaDaSemana pode ser um dos seguintes valores:
-vbSunday – utiliza o domingo como o primeiro dia da semana.
-vbMonday – utiliza a segunda-feira como o primeiro dia da semana.
-vbTuesday – utiliza a terça-feira como o primeiro dia da semana.
-vbWednesday – utiliza quarta-feira como o primeiro dia da semana.
-vbThursday – utiliza quinta-feira como o primeiro dia da semana.
-vbFriday – utiliza sexta-feira como o primeiro dia da semana.
-vbSaturday – utiliza sábado como o primeiro dia da semana.
-vbUseSystemDayOfTheWeek – utiliza o primeiro dia da semana que é especificado pelas definições do seu sistema.
- PrimeiraSemanaDoAno (Opcional) – Uma constante que especifica a primeira semana do ano. Se estiver em branco, a semana de 1 de Janeiro é utilizada como a primeira semana do ano. PrimeiraSemanaDoAno pode ser um dos seguintes valores:
-vbFirstJan1 – utiliza a semana que contém o dia 1 de Janeiro.
-vbFirstFourDays – utiliza a primeira semana que contém pelo menos quatro dias no novo ano.
-vbFirstFullWeek – utiliza a primeira semana completa do ano.
-vbSystem – utiliza a primeira semana do ano conforme especificado pelas definições do sistema.
O código a seguir mostra como usar a função DatePart:
Sub UsandoFuncaoDatePart()
Dim aParteDaData As Integer
aParteDaData = DatePart("yyyy", "12/12/2009")
Debug.Print aParteDaData
End Sub
O resultado é:
Função VBA DateSerial
A função DateSerial do VBA recebe um ano, mês e dia de entrada e devolve uma data.
A sintaxe da função DateSerial é:
DateSerial(Ano, Mês, Dia) onde:
- Ano – Um valor inteiro entre 100 e 9999 que representa o ano.
- Mês – Um valor inteiro que representa o mês.
- Dia – Um valor inteiro que representa o dia.
O código seguinte mostra-lhe como utilizar a função DateSerial:
Sub UsandoFuncaoDateSerial()
Dim aData As Date
aData = DateSerial(2010, 11, 10)
Debug.Print aData
End Sub
O resultado é:
Função VBA DateValue
A função DateValue devolve uma data quando lhe é dada uma representação em sequência de texto de uma data.
A sintaxe da função DateValue é:
DateValue(Data) onde:
- Data – Uma cadeia de caracteres que representa a data.
O código seguinte mostra-lhe como utilizar a função DateValue:
Sub UsandoFuncaoDateValue()
Dim aData As Date
aData = DateValue("29, Outubro, 2010")
Debug.Print aData
End Sub
O resultado é:
Função VBA Day
É possível utilizar a função Day para devolver o dia de uma data de entrada.
A sintaxe da função Day é:
Day(Valor_da_data) onde:
- Valor_da_data – A data da qual se pretende extrair o dia.
O código seguinte mostra-lhe como utilizar a função Day:
Sub UsandoFuncaoDay()
Dim oDia As Integer
oDia = Day("10/12/2010")
Debug.Print oDia
End Sub
O resultado é:
Função VBA Hour
Pode utilizar a função Hour para devolver a hora de uma hora de entrada.
A sintaxe da função Hour é:
Hour(Hora) onde:
- Hora – A hora da qual se pretende extrair a hora.
O código seguinte mostra-lhe como utilizar a função Hour:
Sub UsandoFuncaoHora()
Dim aHora As Integer
aHora = Hour("2:14:17 AM")
Debug.Print aHora
End Sub
O resultado é:
Função VBA Minute
É possível utilizar a função Minute para devolver o valor dos minutos de uma hora de entrada.
A sintaxe da função Minute é:
Minute(Hora) onde:
- Hora – A hora da qual se deseja extrair o valor do minuto.
O código a seguir mostra como usar a função Minute:
Sub UsandoFuncaoMinute()
Dim oValorMinuto As Integer
oValorMinuto = Minute("2:14:17 AM")
Debug.Print oValorMinuto
End Sub
O resultado é:
Função VBA Second
Pode utilizar a função Second para devolver o valor dos segundos de um tempo de entrada.
A sintaxe da Função Second é a seguinte
Second(Hora) onde:
- Hora – A hora da qual se pretende extrair o valor dos segundos.
O código a seguir mostra como usar a função Second:
Sub UsandoFuncaoSecond()
Dim oValorSegundos As Integer
oValorSegundos = Second("2:14:17 AM")
Debug.Print oValorSegundos
End Sub
O resultado é:
Função VBA Month
É possível utilizar a função Month para devolver o mês de uma data de entrada.
A sintaxe da função Month é:
Month(Valor_data) onde:
- Valor_data – A data da qual se pretende extrair o mês.
O código seguinte mostra como utilizar a função Month:
Sub UsandoFuncaoMonth()
Dim oMes As Integer
oMes = Month("18/11/2010")
Debug.Print oMes
End Sub
O resultado é:
Função VBA MonthName
É possível utilizar a função MonthName para devolver o nome de um mês a partir de um número de mês fornecido.
A sintaxe da função MonthName é:
MonthName(Número_do_mês, [Abreviar]) onde:
- Número_do_mês – Um valor inteiro entre 1 e 12.
- Abreviar (Opcional) – Especifica se o nome do mês deve ser abreviado. Se estiver em branco, é utilizado o valor predefinido de Falso.
Sub UsandoFuncaoMonthName()
Dim oNomeDoMes As String
oNomeDoMes = MonthName(12, True)
Debug.Print oNomeDoMes
End Sub
O resultado é:
Função VBA TimeSerial
A função TimeSerial recebe uma hora, um minuto e um segundo de entrada e devolve uma hora.
A sintaxe da função TimeSerial é:
TimeSerial(Hora, Minuto, Segundo) onde:
- Hora – Um valor inteiro entre 0 e 23 que representa o valor da hora.
- Minuto – Um valor inteiro entre 0 e 59 que representa o valor do minuto.
- Segundo – Um valor inteiro entre 0 e 59 que representa o valor do segundo.
O código a seguir mostra como usar a função TimeSerial:
Sub UsandoFuncaoTimeSerial()
Dim aHora As Date
aHora = TimeSerial(1, 10, 15)
Debug.Print aHora
End Sub
O resultado é:
Função VBA TimeValue
A função TimeValue devolve uma Hora a partir de uma representação de sequência de caracteres de uma data ou hora.
A sintaxe da função TimeValue é:
TimeValue(Hora) onde:
- Hora – Uma cadeia de caracteres que representa a hora.
O código seguinte mostra como utilizar a função TimeValue:
Sub UsandoFuncaoTimeValue()
Dim aHora As Date
aHora = TimeValue("22:10:17")
Debug.Print aHora
End Sub
O resultado é:
Função VBA Weekday
É possível utilizar a função Weekday para devolver um número inteiro de 1 a 7 que representa um dia da semana a partir de uma data de entrada.
A sintaxe da função Weekday é:
Weekday(Data, [PrimeiroDiaDaSemana]) onde:
- Data – A data da qual você deseja extrair o valor do dia da semana.
- PrimeiroDiaDaSemana (Opcional) – Uma constante que especifica o dia da semana que a função deve usar como o primeiro dia da semana. Se estiver em branco, o domingo é usado como o primeiro dia da semana. PrimeiroDiaDaSemana pode ser um dos seguintes valores:
-vbSunday – utiliza o domingo como o primeiro dia da semana.
-vbMonday – utiliza a segunda-feira como o primeiro dia da semana.
-vbTuesday – utiliza a terça-feira como o primeiro dia da semana.
-vbWednesday – utiliza quarta-feira como o primeiro dia da semana.
-vbThursday – utiliza quinta-feira como o primeiro dia da semana.
-vbFriday – utiliza sexta-feira como o primeiro dia da semana.
-vbSaturday – utiliza sábado como o primeiro dia da semana.
-vbUseSystemDayOfTheWeek – utiliza o primeiro dia da semana que é especificado pelas definições do seu sistema.
O código a seguir mostra como utilizar a Função Dia da Semana:
Sub UsandoFuncaoWeekday()
Dim oDiaDaSemana As Integer
oDiaDaSemana = Weekday("11/20/2019")
Debug.Print oDiaDaSemana
End Sub
O resultado é:
Função VBA WeekdayName
É possível usar a função WeekdayName para retornar o nome de um dia da semana a partir de um número de dia da semana fornecido como entrada.
A sintaxe da função WeekdayName é:
WeekdayName(DiaDaSemana, [Abbreviar], [PrimeiroDiaDaSemana]) onde:
- Dia da semana – Um valor inteiro entre 1 e 7.
- Abbreviar (Opcional) – Especifica se o nome do dia da semana deve ser abreviado. Se estiver em branco, é utilizado o valor predefinido de Falso.
- PrimeiroDiaDaSemana (Opcional) – Uma constante que especifica o dia da semana que a função deve utilizar como o primeiro dia da semana. Se estiver em branco, o domingo é utilizado como o primeiro dia da semana. PrimeiroDiaDaSemana pode ser um dos seguintes valores:
-vbSunday – utiliza o domingo como o primeiro dia da semana.
-vbMonday – utiliza a segunda-feira como o primeiro dia da semana.
-vbTuesday – utiliza a terça-feira como o primeiro dia da semana.
-vbWednesday – utiliza quarta-feira como o primeiro dia da semana.
-vbThursday – utiliza quinta-feira como o primeiro dia da semana.
-vbFriday – utiliza sexta-feira como o primeiro dia da semana.
-vbSaturday – utiliza sábado como o primeiro dia da semana.
-vbUseSystemDayOfTheWeek – utiliza o primeiro dia da semana que é especificado pelas definições do seu sistema.
Sub UsandoFuncaoWeekdayName()
Dim oNomeDoDia As String
oNomeDoDia = WeekdayName(4)
Debug.Print oNomeDoDia
End Sub
O resultado é:
Função VBA Year
Pode utilizar a função Year para devolver o ano de uma data de entrada.
A sintaxe da função Year é a seguinte:
Year(Valor_data) onde:
- Valor_data – A data da qual se pretende extrair o ano.
O código a seguir mostra como usar a função Year:
Sub UsandoFuncaoYear()
Dim oAno As Integer
oAno = Year("11/12/2010")
Debug.Print oAno
End Sub
O resultado é:
Comparação de datas no VBA
É possível comparar datas usando os operadores >, < e = no VBA. O código a seguir mostra como comparar duas datas no VBA.
Sub ComparandoDatas()
Dim dataUm As Date
Dim dataDois As Date
dataUm = "10/10/2010"
dataDois = "11/11/2010"
If dataUm > dataDois Then
Debug.Print "dataUm é a data posterior"
ElseIf dataUm = dataDois Then
Debug.Print "As duas datas são iguais"
Else
Debug.Print "dataDois é a data posterior"
End If
End Sub
Para saber mais sobre como formatar datas como sequência de caracteres, consulte este tutorial.