Функции для работы с датой и временем в VBA Excel. Синтаксис, параметры, спецсимволы, примеры. Функции, возвращающие текущие дату и время по системному таймеру.
Функция Date
Date – это функция, которая возвращает значение текущей системной даты. Тип возвращаемого значения – Variant/Date.
Синтаксис
Пример
Sub PrimerDate() MsgBox «Сегодня: « & Date End Sub |
Функция DateAdd
DateAdd – это функция, которая возвращает результат прибавления к дате указанного интервала времени. Тип возвращаемого значения – Variant/Date.
Синтаксис
DateAdd(interval, number, date) |
Параметры
Параметр | Описание |
---|---|
interval | Обязательный параметр. Строковое выражение из спецсимволов, представляющее интервал времени, который требуется добавить. |
number | Обязательный параметр. Числовое выражение, задающее количество интервалов, которые необходимо добавить. Может быть как положительным (возвращается будущая дата), так и отрицательным (возвращается предыдущая дата). |
date | Обязательный параметр. Значение типа Variant/Date или литерал, представляющий дату, к которой должен быть добавлен интервал. |
Таблицу аргументов (значений) параметра interval
смотрите в параграфе «Приложение 1».
Примечание к таблице аргументов: три символа – y, d, w – указывают функции DateAdd
на один день, который необходимо прибавить к исходной дате number
раз.
Пример
Sub PrimerDateAdd() MsgBox «31.01.2021 + 1 месяц = « & DateAdd(«m», 1, «31.01.2021») ‘Результат: 28.02.2021 MsgBox «Сегодня + 3 года = « & DateAdd(«yyyy», 3, Date) MsgBox «Сегодня — 2 недели = « & DateAdd(«ww», —2, Date) MsgBox «10:22:14 + 10 минут = « & DateAdd(«n», 10, «10:22:14») ‘Результат: 10:32:14 End Sub |
Функция DateDiff
DateDiff – это функция, которая возвращает количество указанных интервалов времени между двумя датами. Тип возвращаемого значения – Variant/Long.
Синтаксис
DateDiff(interval, date1, date2, [firstdayofweek], [firstweekofyear]) |
Параметры
Параметр | Описание |
---|---|
interval | Обязательный параметр. Строковое выражение из спецсимволов, представляющее интервал времени, количество которых (интервалов) требуется вычислить между двумя датами. |
date1, date2 | Обязательные параметры. Значения типа Variant/Date , представляющие две даты, между которыми вычисляется количество указанных интервалов. |
firstdayofweek | Необязательный параметр. Константа, задающая первый день недели. По умолчанию – воскресенье. |
firstweekofyear | Необязательный параметр. Константа, задающая первую неделю года. По умолчанию – неделя, в которую входит 1 января. |
Таблицу аргументов (значений) параметра interval
смотрите в параграфе «Приложение 1».
Примечание к таблице аргументов: в отличие от функции DateAdd
, в функции DateDiff
спецсимвол "w"
, как и "ww"
, обозначает неделю. Но расчет осуществляется по разному. Подробнее об этом на сайте разработчиков.
Параметры firstdayofweek
и firstweekofyear
определяют правила расчета количества недель между датами.
Таблицы констант из коллекций firstdayofweek
и firstweekofyear
смотрите в параграфах «Приложение 2» и «Приложение 3».
Пример
Sub PrimerDateDiff() ‘Даже если между датами соседних лет разница 1 день, ‘DateDiff с интервалом «y» покажет разницу — 1 год MsgBox DateDiff(«y», «31.12.2020», «01.01.2021») ‘Результат: 1 год MsgBox DateDiff(«d», «31.12.2020», «01.01.2021») ‘Результат: 1 день MsgBox DateDiff(«n», «31.12.2020», «01.01.2021») ‘Результат: 1440 минут MsgBox «Полных лет с начала века = « & DateDiff(«y», «2000», Year(Now) — 1) End Sub |
Функция DatePart
DatePart – это функция, которая возвращает указанную часть заданной даты. Тип возвращаемого значения – Variant/Integer.
Есть предупреждение по использованию этой функции.
Синтаксис
DatePart(interval, date, [firstdayofweek], [firstweekofyear]) |
Параметры
Параметр | Описание |
---|---|
interval | Обязательный параметр. Строковое выражение из спецсимволов, представляющее часть даты, которую требуется извлечь. |
date | Обязательные параметры. Значение типа Variant/Date , представляющее дату, часть которой следует извлечь. |
firstdayofweek | Необязательный параметр. Константа, задающая первый день недели. По умолчанию – воскресенье. |
firstweekofyear | Необязательный параметр. Константа, задающая первую неделю года. По умолчанию – неделя, в которую входит 1 января. |
Таблицу аргументов (значений) параметра interval
смотрите в параграфе «Приложение 1». В третьей графе этой таблицы указаны интервалы значений, возвращаемых функцией DatePart
.
Таблицы констант из коллекций firstdayofweek
и firstweekofyear
смотрите в параграфах «Приложение 2» и «Приложение 3».
Пример
Sub PrimerDatePart() MsgBox DatePart(«y», «31.12.2020») ‘Результат: 366 MsgBox DatePart(«yyyy», CDate(43685)) ‘Результат: 2019 MsgBox DatePart(«n», CDate(43685.45345)) ‘Результат: 52 MsgBox «День недели по счету сегодня = « & DatePart(«w», Now, vbMonday) End Sub |
Функция DateSerial
DateSerial – это функция, которая возвращает значение даты для указанного года, месяца и дня. Тип возвращаемого значения – Variant/Date.
Синтаксис
DateSerial(year, month, day) |
Параметры
Параметр | Описание |
---|---|
year | Обязательный параметр типа Integer. Числовое выражение, возвращающее значение от 100 до 9999 включительно. |
month | Обязательный параметр типа Integer. Числовое выражение, возвращающее любое значение (в пределах Integer), а не только от 1 до 12.* |
day | Обязательный параметр типа Integer. Числовое выражение, возвращающее любое значение (в пределах Integer), а не только от 1 до 31.* |
* Функция DateSerial автоматически пересчитывает общее количество дней в полные месяцы и остаток, общее количество месяцев в полные годы и остаток (подробнее в примере).
Пример
Sub PrimerDateSerial() MsgBox DateSerial(2021, 2, 10) ‘Результат: 10.02.2020 MsgBox DateSerial(2020, 1, 400) ‘Результат: 03.02.2021 End Sub |
Разберем подробнее строку DateSerial(2020, 1, 400)
:
- 400 дней = 366 дней + 31 день + 3 дня;
- 366 дней = 1 год, так как по условию month:=1, значит февраль 2020 входит в расчет, а в нем – 29 дней;
- 31 день = 1 месяц, так как сначала заполняется январь (по условию month:=1);
- 3 дня – остаток.
В итоге получается:
DateSerial(2020+1, 1+1, 3) = DateSerial(2021, 2, 3)
Функция DateValue
DateValue – это функция, которая преобразует дату, указанную в виде строки, в значение типа Variant/Date (время игнорируется).
Синтаксис
Параметр date
– строковое выражение, представляющее дату с 1 января 100 года по 31 декабря 9999 года.
Пример
Sub PrimerDateValue() MsgBox DateValue(«8 марта 2021») ‘Результат: 08.03.2021 MsgBox DateValue(«17 мая 2021 0:59:15») ‘Результат: 17.05.2021 End Sub |
Функция DateValue игнорирует время, указанное в преобразуемой строке, но если время указано в некорректном виде (например, «10:60:60»), будет сгенерирована ошибка.
Функция Day
Day – это функция, которая возвращает день месяца в виде числа от 1 до 31 включительно. Тип возвращаемого значения – Variant/Integer.
Синтаксис
Параметр date
– любое числовое или строковое выражение, представляющее дату.
Пример
Sub PrimerDay() MsgBox Day(Now) End Sub |
Функция IsDate
IsDate – это функция, которая возвращает True, если выражение является датой или распознается как допустимое значение даты или времени. В остальных случаях возвращается значение False.
Синтаксис
Параметр expression
– это переменная, возвращающая дату или строковое выражение, распознаваемое как дата или время.
Значение, возвращаемое переменной expression, не должно выходить из диапазона допустимых дат: от 1 января 100 года до 31 декабря 9999 года (для Windows).
Пример
Sub PrimerIsDate() MsgBox IsDate(«18 апреля 2021») ‘Результат: True MsgBox IsDate(«31 февраля 2021») ‘Результат: False MsgBox IsDate(«4.10.20 11:12:54») ‘Результат: True End Sub |
Функция Hour
Hour – это функция, которая возвращает количество часов в виде числа от 0 до 23 включительно. Тип возвращаемого значения – Variant/Integer.
Синтаксис
Параметр time
– любое числовое или строковое выражение, представляющее время.
Пример
Sub PrimerHour() MsgBox Hour(Now) MsgBox Hour(«22:36:54») End Sub |
Функция Minute
Minute – это функция, которая возвращает количество минут в виде числа от 0 до 59 включительно. Тип возвращаемого значения – Variant/Integer.
Синтаксис
Параметр time
– любое числовое или строковое выражение, представляющее время.
Пример
Sub PrimerMinute() MsgBox Minute(Now) MsgBox Minute(«22:36:54») End Sub |
Функция Month
Month – это функция, которая возвращает день месяца в виде числа от 1 до 12 включительно. Тип возвращаемого значения – Variant/Integer.
Синтаксис
Параметр date
– любое числовое или строковое выражение, представляющее дату.
Пример
Sub PrimerMonth() MsgBox Month(Now) End Sub |
Функция MonthName
MonthName – это функция, которая возвращает название месяца в виде строки.
Синтаксис
MonthName(month, [abbreviate]) |
Параметры
Параметр | Описание |
---|---|
month | Обязательный параметр. Числовое обозначение месяца от 1 до 12 включительно. |
abbreviate | Необязательный параметр. Логическое значение: True – возвращается сокращенное название месяца, False (по умолчанию) – название месяца не сокращается. |
Пример
Sub PrimerMonthName() MsgBox MonthName(10) ‘Результат: Октябрь MsgBox MonthName(10, True) ‘Результат: окт End Sub |
Функция Now
Now – это функция, которая возвращает текущую системную дату и время. Тип возвращаемого значения – Variant/Date.
Синтаксис
Пример
Sub PrimerNow() MsgBox Now MsgBox Day(Now) MsgBox Hour(Now) End Sub |
Функция Second
Second – это функция, которая возвращает количество секунд в виде числа от 0 до 59 включительно. Тип возвращаемого значения – Variant/Integer.
Синтаксис
Параметр time
– любое числовое или строковое выражение, представляющее время.
Пример
Sub PrimerSecond() MsgBox Second(Now) MsgBox Second(«22:30:14») End Sub |
Функция Time
Time – это функция, которая возвращает значение текущего системного времени. Тип возвращаемого значения – Variant/Date.
Синтаксис
Пример
Sub PrimerTime() MsgBox «Текущее время: « & Time End Sub |
Функция TimeSerial
TimeSerial – это функция, которая возвращает значение времени для указанного часа, минуты и секунды. Тип возвращаемого значения – Variant/Date.
Синтаксис
TimeSerial(hour, minute, second) |
Параметры
Параметр | Описание |
---|---|
hour | Обязательный параметр типа Integer. Числовое выражение, возвращающее значение от 0 до 23 включительно. |
minute | Обязательный параметр типа Integer. Числовое выражение, возвращающее любое значение (в пределах Integer), а не только от 0 до 59.* |
second | Обязательный параметр типа Integer. Числовое выражение, возвращающее любое значение (в пределах Integer), а не только от 0 до 59.* |
* Функция TimeSerial автоматически пересчитывает общее количество секунд в полные минуты и остаток, общее количество минут в полные часы и остаток (подробнее в примере).
Пример
Sub PrimerTime() MsgBox TimeSerial(5, 16, 4) ‘Результат: 5:16:04 MsgBox TimeSerial(5, 75, 158) ‘Результат: 6:17:38 End Sub |
Разберем подробнее строку TimeSerial(5, 75, 158)
:
- 158 секунд = 120 секунд (2 минуты) + 38 секунд;
- 75 минут = 60 минут (1 час) + 15 минут.
В итоге получается:
TimeSerial(5+1, 15+2, 38) = TimeSerial(6, 17, 38)
Функция TimeValue
TimeValue – это функция, которая преобразует время, указанное в виде строки, в значение типа Variant/Date (дата игнорируется).
Синтаксис
Параметр time
– строковое выражение, представляющее время с 0:00:00 по 23:59:59 включительно.
Пример
Sub PrimerTimeValue() MsgBox TimeValue(«6:45:37 PM») ‘Результат: 18:45:37 MsgBox TimeValue(«17 мая 2021 3:59:15 AM») ‘Результат: 3:59:15 End Sub |
Функция TimeValue игнорирует дату, указанную в преобразуемой строке, но если дата указана в некорректном виде (например, «30.02.2021»), будет сгенерирована ошибка.
Функция Weekday
Weekday – это функция, которая возвращает день недели в виде числа от 1 до 7 включительно. Тип возвращаемого значения – Variant/Integer.
Синтаксис
Weekday(date, [firstdayofweek]) |
Параметры
Параметр | Описание |
---|---|
date | Обязательный параметр. Любое выражение (числовое, строковое), отображающее дату. |
firstdayofweek | Константа, задающая первый день недели. По умолчанию – воскресенье. |
Таблицу констант из коллекции firstdayofweek
смотрите в параграфе «Приложение 2».
Пример
Sub PrimerWeekday() MsgBox Weekday(«23 апреля 2021», vbMonday) ‘Результат: 5 MsgBox Weekday(202125, vbMonday) ‘Результат: 6 End Sub |
Функция WeekdayName
WeekdayName – это функция, которая возвращает название дня недели в виде строки.
Синтаксис
WeekdayName(weekday, [abbreviate], [firstdayofweek]) |
Параметры
Параметр | Описание |
---|---|
weekday | Обязательный параметр. Числовое обозначение дня недели от 1 до 7 включительно. |
abbreviate | Необязательный параметр. Логическое значение: True – возвращается сокращенное название дня недели, False (по умолчанию) – название дня недели не сокращается. |
firstdayofweek | Константа, задающая первый день недели. По умолчанию – воскресенье. |
Таблицу констант из коллекции firstdayofweek
смотрите в параграфе «Приложение 2».
Пример
Sub PrimerWeekdayName() MsgBox WeekdayName(3, True, vbMonday) ‘Результат: Ср MsgBox WeekdayName(3, , vbMonday) ‘Результат: среда MsgBox WeekdayName(Weekday(Now, vbMonday), , vbMonday) End Sub |
Функция Year
Year – это функция, которая возвращает номер года в виде числа. Тип возвращаемого значения – Variant/Integer.
Синтаксис
Параметр date
– любое числовое или строковое выражение, представляющее дату.
Пример
Sub PrimerYear() MsgBox Year(Now) End Sub |
Приложение 1
Таблица аргументов (значений) параметраinterval
для функций DateAdd
, DateDiff
и DatePart
:
Аргумент | Описание | Интервал значений |
---|---|---|
yyyy | Год | 100 – 9999 |
q | Квартал | 1 – 4 |
m | Месяц | 1 – 12 |
y | День года | 1 – 366 |
d | День месяца | 1 – 31 |
w | День недели | 1 – 7 |
ww | Неделя | 1 – 53 |
h | Часы | 0 – 23 |
n | Минуты | 0 – 59 |
s | Секунды | 0 – 59 |
В третьей графе этой таблицы указаны интервалы значений, возвращаемых функцией DatePart
.
Приложение 2
Константы из коллекции firstdayofweek
:
Константа | Значение | Описание |
---|---|---|
vbUseSystem | 0 | Используются системные настройки |
vbSunday | 1 | Воскресенье (по умолчанию) |
vbMonday | 2 | Понедельник |
vbTuesday | 3 | Вторник |
vbWednesday | 4 | Среда |
vbThursday | 5 | Четверг |
vbFriday | 6 | Пятница |
vbSaturday | 7 | Суббота |
Приложение 3
Константы из коллекции firstweekofyear
:
Константа | Значение | Описание |
---|---|---|
vbUseSystem | 0 | Используются системные настройки. |
vbFirstJan1 | 1 | Неделя, в которую входит 1 января (по умолчанию). |
vbFirstFourDays | 2 | Неделя, в которую входит не менее четырех дней нового года. |
vbFirstFullWeek | 3 | Первая полная неделя года. |
VBA stands for Visual Basic for Applications. It is different from Visual Basic. Microsoft came up with this programming feature to use with the Microsoft Office software suite. It can be used to create programs to be run on Microsoft Excel, Outlook or other components of the MS Office suite. In this intermediate level tutorial, we walk you through VBA Format function for date and time. VBA Format function takes an expression, a date or number value and converts the same into a string. We assume that you know the basic concepts of MS Excel and Visual Basic for Applications. You can learn more about VBA in this excellent course, or of you’re in a hurry, you can take this 24hr VBA trainer course.
How to Assign VBA Date Value to a Variable
You can set the format in any version of Microsoft Excel starting from Excel 2000 to Excel version 2013. You can assign any date format as a value to a variable with the date data type in Excel VBA. However, ensure that values are put between simple hash (#) tags. Here VBA converts the value to a “Date” that can be used in comparisons and other types of statements. The following examples show this:
D1 = #March 24, 2014# D1 = #3/24/2014# D1 = #03/24/2014#
VBA will interpret the above statements to the date “March 24, 2014.” Before we move on, to learn more about how you can use VBA with MS Excel, you may want to try out this primer course; or just crash through our VBA tutorial to brush up your understanding.
VBA Format Function
Microsoft Excel Format function accepts the date expression and returns it as a formatted string. The syntax of Format date function looks like this
Format (expression, [format, [firstdayofweek, [firstweekofyear] ] ] )
Let’s take a closer look at the parameters.
- Expression stands for the value to be formatted.
- Format stands for the format to be applied to the expression. It is optional. In VBA Format Date function you have the option to either define your own format or use some of the MS Excel predefined format.
- Firstdayofweek specifies the first day of the week. If it is not declared, the Format function assumes that Sunday is the first day of the week. This parameter is optional.
- Firstweekofyear is the value that specifies the first week of the year. However, if this parameter is not declared, then the Format function assumes that the first week begins from January 1.
The table given below displays some of the Excel predefined date format.
Format |
Explanation |
General Date | Displays date depending upon the system settings |
Long Date | Displays date depending upon the system’s long date setting |
Medium Date | Displays date depending upon the system’s medium date setting |
Short Date | Displays date depending upon the system’s short date setting |
Long Time | Displays time depending upon the system’s long time setting |
Medium Time | Displays time depending upon the system’s medium time setting |
Short Time | Displays time depending upon the system’s short time setting |
The table given below contains the values the parameter “firstdayoftheweek” can take up in your VBA programs.
Constant |
Value |
Explanation |
vbUseSystem | 0 | Uses the NLS API (National Language Support Application Program Interface) setting |
VbSunday | 1 | Sunday (default, if parameter is not declared) |
vbMonday | 2 | Monday |
vbTuesday | 3 | Tuesday |
vbWednesday | 4 | Wednesday |
vbThursday | 5 | Thursday |
vbFriday | 6 | Friday |
vbSaturday | 7 | Saturday |
The table below lists the possible values of the optional parameter “Firstweekofyear that you can use in your VBA programs. Take a look
Constant | Value | Explanation |
vbUseSystem | 0 | Uses the NLS API setting |
vbFirstJan1 | 1 | The week that contains January 1 |
vbFirstFourDays | 2 | The first week that has at least 4 days in the year |
vbFirstFullWeek | 3 | The first full week of the year |
Here are a few examples of Format function for Date in Excel VBA to make this function more clear.
1. Format(#24/03/2014#, “Short Date”) would return ’24/03/2014′
2. Format(#24/03/2014#, “Long Date”) would return ‘March 24, 2014’
3. Format(#24/03/2014#, “yyyy/mm/dd”) would return ‘2014/03/24’
We suggest that you work out more examples of your own on date function format. That’ll help you get more comfortable with the various options. This course with Mr Excel can help you get a good workout with Excel VBA examples.
User Defined Format Function for date and time
Note that you can also use some pre-defined variants of the Format function for date and time. The syntax of that looks like this
Format (expression, style)
The table below shows the user-defined Format function for date and time. Read through carefully
Format | Explanation |
Format (Now, “M”) | Displays the current month and date |
Format (Now, “MM”) | Displays the current month in double digits. |
Format (Now, “MMM”) | Displays the abbreviated name of the current month |
Format (Now, “MMMM”) | Displays the full name of the current month. |
Format (Now, “dd/MM/yyyy”) | Displays the current date in the day/month/year format. |
Format (Now, “MMM,d,yyyy”) | Displays the current date in the Month, Day, Year Format |
Format (Now, “h:mm:ss tt”) | Displays the current time in the format hour:minute:second and show am/pm |
Format (Now, “MM/dd/yyyy h:mm:ss) | Displays current date and time in the format hour:minute:second |
Let’s take a closer look at the user-defined format function for date and time using a simple VBA program.
Sub Newbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click Label1.Text = Format(Now, "M") Label2.Text = Format(Now, "MM") Label3.Text = Format(Now, "MMM") Label4.Text = Format(Now, "MMMM") Label5.Text = Format(Now, "dd/MM/yyyy") Label6.Text = Format(Now, "MMM,d,yyyy") Label7.Text = Format(Now, "h:mm:ss tt") Label8.Text = Format(Now, "MM/dd/yyyy h:mm:ss tt") End Sub
When you run this program, it will display the current system date in different formats.
Label1.Text will display March 24 Label2.Text will display 03 Label3.Text will display Mar Label4.Text will display March Label5.Text will display 24/03/2014 Label6.Text will display Mar,24,2014 Label7.Text will display 12:49:23 PM Label8.Text will display 03/24/2014 12:49:23 PM
Characters supported by VBA Date Function
VBA Date functions supports these characters to display date and time. It’s quite a long list, so check out the table below!
Characters | Example | Description |
m | 8 | Month (numerical without zeros) |
mm | 08 | Month (numerical with zeros) |
mmm | Sep | Month (abbreviated text) |
mmmm | September | Month (full-length text) |
d | 6 | Day (numerical without zeros) |
dd | 06 | Day (numerical with zeros) |
ddd | Wed | Day (abbreviated text) |
dddd | Wednesday | Days (full-length text) |
yy | 14 | Year (last 2 digits) |
yyyy | 2014 | Year (4 digits) |
h | 9 | Hours without zeros (0-23) |
hh | 09 | Hours with zeros (00-23) |
n | 7 | Minutes without zeros (0-59) |
nn | 07 | Minutes with zeros (00-59) |
s | 5 | Seconds without zeros (0-59) |
ss | 05 | Seconds with zeros (00-59) |
AM/PM | AM | Display AM/PM |
Let’s use an example to help you to understand the above table better.
Sub date_and_time() date_example = Now() Range("C1") = Format(date_example, "mm.dd.yy") Range("C2") = Format(date_example, "d mmmmyyyy") Range("C3") = Format(date_example, "mmmm j, yyyy") Range("C4") = Format(date_example, "ddddd") Range("C5") = Format(date_example, "mmmm-yy") Range("C6") = Format(date_example, "mm.dd.yyyyhh:mm") Range("C7") = Format(date_example, "m.d.yy h:mm AM/PM") Range("C8") = Format(date_example, "hHmm") End Sub
In this program we assign the system date and time through the now() to the variable date_example. After the execution of the program, the cells will contain the following values
C1 will contain 03.24.14 C2 will contain 24 March 2014 C3 will contain March 24 2014 C4 will contain Mon 24 C5 will contain March-14 C6 will contain 03.24.2014 15:04 C7 will contain 3.24.14 15:04 PM C8 will contain 15H04
Given below is an example of using date function to calculate your age. We assume that you have basic programming knowledge. If not please refer our basic tutorial on VBA programming.
Calculating Age In VBA
Function Age(Date1 As Date, Date2 As Date) As String Dim Year1 As Integer Dim Month_1 As Integer Dim Day1 As Integer Dim Temp As Date Temp = DateSerial(Year(Date2), Month(Date1), Day(Date1)) Year1 = Year(Date2) - Year(Date1) + (Temp > Date2) Month1 = Month(Date2) - Month(Date1) - (12 * (Temp > Date2)) Day1 = Day(Date2) - Day(Date1) If Day1 < 0 Then Month_1 = Month_1 - 1 Day1 = Day(DateSerial(Year(Date2), Month(Date2) + 1, 0)) + Day1 + 1 End If Age = Year1 &“years "& Month_1 & " months " & Day1 & " days" End Function
This program accepts two parameters Date1 and Date2. Date1 is the year of your birth and Date2 is the current date. In the end, you get your age in terms of years, months and days.
Like you’ve just seen, the Format function for date and time comes in variety of options. You can choose the format that you want to display or use in your programs. As always practice makes perfect. Do try these examples for yourself. If you’d like to get more hands on with VBA before you proceed, this course can help you. Once you’re ready to step it up a notch, you can try out this Ultimate VBA course. Let us know how it goes!
Return to VBA Code Examples
In this Article
- VBA Date Variable
- Assign Today to Variable
- Assign Now to Variable
- Assign Time to Variable
- Assign a Date to Variable with DateSerial
- Assign a Time to Variable with TimeSerial
- VBA DateValue Function
- VBA TimeValue Function
- Excel VBA Date Variable Example
- VBA Date Variable in Access
We have already gone over what variables, data types and constants are, in our VBA Data Types – Variables and Constants tutorial. In this tutorial, we are going to cover how to declare a variable as a date.
In VBA, the date data type is stored as a decimal. Both dates and times can be stored in this data type. The VBA date data type can store values ranging from 1 January 100 – 31 December 9999.
VBA Date Variable
You declare a variable as a date using the Dim keyword:
Dim dateOne as Date
Then you can assign a date to the date variable. There are multiple ways to generate dates to assign to variables:
Assign Today to Variable
The Date Function will return today’s date:
Dim dtToday
dtToday = Date
Assign Now to Variable
The Now Function will return today’s date and current time:
Dim dNow
dNow = Now
Assign Time to Variable
The tim will return the current time:
Dim tTime
tTime = Time
Assign a Date to Variable with DateSerial
The DateSerial function will return a date based on an input year, month and day:
Dim dsDate
dsDate = DateSerial(2010, 11, 11)
Assign a Time to Variable with TimeSerial
The TimeSerial function will return a time, based on an input hour, minute and second:
Dim tsTime
tsTime = TimeSerial (10, 10, 45)
You must enclose dates with the # or ” when using them in your code, as shown below:
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More
VBA DateValue Function
The VBA DateValue Function can be used to initialize a date. The following code can be used to initialize a date in VBA:
MsgBox DateValue("1/1/2010")
VBA TimeValue Function
The TimeValue Function generates a time:
MsgBox TimeValue("21:30:57")
Excel VBA Date Variable Example
This procedure demonstrates how to create date variables, assign them values, and output them into an Excel worksheet:
Sub DeclaringAVariableAsADate()
Dim dateOne As Date
Dim dateTwo As Date
dateOne = #1/1/2019#
dateTwo = "1/2/2019"
Range("A1").Value = dateOne
Range("A2").Value = dateTwo
End Sub
The result is:
You can learn more about Date Functions in this tutorial.
VBA Programming | Code Generator does work for you!
VBA Date Variable in Access
The Date Variable works exactly the same in Access VBA as in Excel VBA.
This procedure demonstrates how to create a date variable and update a field in an access table with the value.
Sub DeclaringAVariableAsADate()
Dim dtWork As Date
dtWork = #05/10/2020#
DoCmd.RunSql "UPDATE tblJobs SET WorkDate = #" & dtWork & "# WHERE JobNo = 6"
End Sub
Мы уже рассмотрели, что такое переменные, типы данных и константы, в нашем руководстве по типам данных VBA — переменные и константы. В этом руководстве мы расскажем, как объявить переменную как дату.
В VBA тип данных даты хранится в виде десятичной дроби. В этом типе данных могут храниться как дата, так и время. Тип данных даты VBA может хранить значения в диапазоне от 1 января 100 до 31 декабря 9999.
Вы объявляете переменную как дату с помощью ключевого слова Dim:
Затем вы можете назначить дату переменной даты. Есть несколько способов создания дат для присвоения переменным:
Назначить сегодня переменной
Функция Date вернет сегодняшнюю дату:
123 | Dim dtTodaydtToday = Дата |
Назначить сейчас переменной
Функция Now вернет сегодняшнюю дату и текущее время:
123 | Dim dNowdNow = Сейчас |
Назначить время переменной
Функция времени вернет текущее время:
123 | Тусклое времяtTime = Время |
Назначьте дату переменной с помощью DateSerial
Функция DateSerial вернет дату на основе введенного года, месяца и дня:
123 | Dim dsDatedsDate = DateSerial (2010, 11, 11) |
Назначьте время переменной с помощью TimeSerial
Функция TimeSerial вернет время на основе введенных часов, минут и секунд:
123 | Dim tsTimetsTime = TimeSerial (10, 10, 45) |
Вы должны заключать даты в символы # или ”при их использовании в коде, как показано ниже:
Функция VBA DateValue
Функцию VBA DateValue можно использовать для инициализации даты. Следующий код можно использовать для инициализации даты в VBA:
1 | MsgBox DateValue («01.01.2010») |
Функция VBA TimeValue
1 | MsgBox TimeValue («21:30:57») |
Пример переменной даты Excel VBA
Эта процедура демонстрирует, как создавать переменные даты, присваивать им значения и выводить их на лист Excel:
12345678910111213 | Sub DeclaringAVariableAsADate ()Тусклая дата Один как ДатаТусклая дата: два как датаdateOne = # 1/1/2019 #dateTwo = «1/2/2019″Диапазон («A1»). Значение = dateOneДиапазон («A2»). Значение = dateTwoКонец подписки |
Результат:
Вы можете узнать больше о функциях даты в этом руководстве.
Переменная даты VBA в Access
Переменная даты работает в Access VBA точно так же, как и в Excel VBA.
Эта процедура демонстрирует, как создать переменную даты и обновить поле в таблице доступа значением.
12345 | Sub DeclaringAVariableAsADate ()Dim dtWork As DatedtWork = # 05/10/2020 #DoCmd.RunSql «UPDATE tblJobs SET WorkDate = #» & dtWork & «# WHERE JobNo = 6″Конец подписки |