Antes de poder tirar partido do poder de algumas funções de Data e Hora, precisa entender como o MS Excel armazena datas e horas. Independentemente de como tenha formatado uma célula para exibir uma data ou hora, o MS Excel sempre as armazenará da mesma forma.
Como o MS Excel armazena as Datas e Horas:
O MS Excel armazena datas e horas, como um número que representa o número de dias desde 0-Jan-1900, mais uma parte fracionária de um dia de 24 horas: ddddd.tttttt. Isso é chamado de Serial Date (data de série) ou de Serial Date-Time (Série de Data-Tempo).
Datas
A porção inteira do número, ddddd, representa o número de dias desde 0-Jan-1900. Por exemplo, a data 19-Jan-2000 é armazenado como 36.544, 36.544 dias já se passaram desde 0-Jan-1900. O número 1 representa 1-Jan-1900. Entenda-se que o número 0 não representa 31-Dez-1899. Se usar a função mês com a data 0, retornará Janeiro e não Dezembro. Além disso, a função retornará ANO como 1900 e não como 1899.
Na verdade, esse número é maior do que o número real de dias. Isso ocorre porque o MS Excel comporta-se como se a data de 29-Fev-1900 tivesse existido. O ano de 1900 não foi um ano bissexto (ano de 2000 é um ano bissexto). No MS Excel, um dia após 28-Fev-1900 é 29-Fev-1900. Na realidade, o dia depois de 28-Fev-1900 é 01-Mar-1900. Isso não é um Bug (erro), na verdade, foi desenhado assim. O MS Excel funciona dessa maneira porque este realmente era um erro no Lotus 123. Quando o MS Excel foi desenvolvido e introduzido no mercado, o Lotus 123 tinha quase todo o mercado de software de planilha eletrônica. A Microsoft decidiu continuar com o bug do Lotus, a fim de torná-lo totalmente compatível. Os usuários que passaram do Lotus 123 para o MS Excel não tiveram de fazer quaisquer ajustes e/ou alterações em seus dados. Enquanto todas as datas forem até 01-Mar-1900, esta não deve ser de nenhuma preocupação.
No MS Excel temos uma função que retorna um valor formatado...Veremos aqui algumas formas para retornar a formatação de Datas:
Format ( expressão, [ formato, [ firstdayofweek, [firstweekofyear] ] ] )
expressão é o valor para o formato.
formato é opcional. É o formato para aplicar a expressão. Podemos definir nosso próprio formato ou usar um dos formatos nomeados que o MS Excel tem pré-definido, tais como:
General Date
Exibe a data com base nas configurações do seu sistema.
Long Date
Mostra a data com base no Long Date configurado no sistema
Medium Date
Exibe a data com base no Medium Date configurado no sistema
Short Date
Mostra a data com base no Short Date configurado no sistema
Long Time
Exibe a data com base no Long Time configurado no sistema
Medium Time
Mostra a data com base no Medium Time configurado no sistema
Short Time
Exibe a data com base no Short Time configurado no sistema
firstdayofweek [primeirodiadasemana] é opcional. É um valor que especifica o primeiro dia da semana. Se este parâmetro for omitido, a função Format assume que o Domingo é o primeiro dia da semana. Este parâmetro pode ser um dos seguintes valores:
Constante Valor Explanação
vbUseSystem 0 Usa a configuração da API NLS.
VbSunday 1 Domingo (É o default, se o parâmetro for omitido).
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 [primeirasemanadoano] é opcional. É um valor que especifica a primeira semana do ano. Se este parâmetro for omitido, a função Format assume que a semana que contém 1 de janeiro é a primeira semana do ano. Este parâmetro pode ser um dos seguintes valores:
Constante Valor Explanação
vbUseSystem 0 Usa a configuração da API NLS.
vbFirstJan1 1 A semana que contém 1º de Janeiro.
vbFirstFourDays 2 A primeira semana que contiver 4 dias no Ano.
vbFirstFullWeek 3 A primeira semana cheia do Ano.
Aplica-se ao:
MS Office Excel 2007
MS Office Excel 2003
MS Office Excel XP
MS Office Excel 2000
Exemplo:
Format (#05/02/2007#, "Short Date")
Retornará: '05/02/2007'
Format (#05/02/2007#, "Long Date")
Retornará: 'Februry 05, 2007'
Format (#05/02/2007#, "yyyy/mm/dd")
Retornará: '2007/05/02'
Codificação VBA:
Function TitleCaption()
' Author: Date: Contact: URL:
' André Bernardes 23/03/2010 09:17 bernardess@gmail.com http://al-bernardes.sites.uol.com.br/
' Atualiza o título no FORM.
' Listening: GreensLeeves - Mozart
Let Me.Caption = ":. " & Format (Now(), "Long Date") & " - " & Right (Now(), 8)
End Function
Algumas Funções com Datas e Horas:
Overtime Hours In Timesheets
Quarter, Determining From Date
Rounding Times
Thanksgiving, Calculation Of Date
Times, Adding And Subtracting
Times And Working Hours, Between Two Dates
Times, Quick Entry
Times, Rounding
Timesheets, Working With Regular And Overtime Hours
Time Zones
Week Numbers, Excel and ISO
Weekday, Counting Between Dates
Weekday, First And Last Of Month
Weekday, Nth Day Of Month (VBA)
Weekday, Nth Day Of Month (Formula)
Weekdays, Creating Series Of
Weeks, Difference Between Dates
Year, First Monday Of
Years, Entering Two Digit Years
Dates, Adding And Subtracting
Dates, Differences Between
Dates, Distributing Across Months Or Years
Dates, Excel Serial Format
Dates, Finding With VBA .Find Method
Dates, Quick Entry
Dates, Two Digit Years
Day Of Week, Nth Day Of Week (VBA)
Day Of Week, Nth Day Of Week In A Month (Formula)
Day Of Week, Returning Nth Day Of Week In A Year (Formula)
Days In Month, First And Last Days In Month
DATEDIF Function
Degrees, Minutes, And Seconds
Easter, Calculation Of Date
Holidays, Calculation Of Dates
Julian Dates
Last Weekday Of Month
Leap Year, Determining
Age, Calculating
Birthdays And Age
VBA Procedures For Dates And Times
Distributing Dates Over Intervals