Функции для работы с датой и временем в 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 | Первая полная неделя года. |
ТРЕНИНГИ
Быстрый старт
Расширенный Excel
Мастер Формул
Прогнозирование
Визуализация
Макросы на VBA
КНИГИ
Готовые решения
Мастер Формул
Скульптор данных
ВИДЕОУРОКИ
Бизнес-анализ
Выпадающие списки
Даты и время
Диаграммы
Диапазоны
Дубликаты
Защита данных
Интернет, email
Книги, листы
Макросы
Сводные таблицы
Текст
Форматирование
Функции
Всякое
Коротко
Подробно
Версии
Вопрос-Ответ
Скачать
Купить
ПРОЕКТЫ
ОНЛАЙН-КУРСЫ
ФОРУМ
Excel
Работа
PLEX
© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
Техническая поддержка сайта
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
I have a dialog box that appears when the user clicks a macro button. This dialog box is mostly filled out (date, email, producer, website, etc are filled) and all the user needs to do is enter their name. The problem is that the date entered is static, so if I entered «3/3/11» it’ll stay that way until someone changes it.
I was wondering if there was some way for that text box to always display the current date (unless the user decides to change it for whatever reason). I’ve tried putting different things into the «Value» section of the text box (such as «getDate()» and «= Date()») but so far haven’t been successful.
Thank you,
Jesse Smothermon
H.B.
160k28 gold badges316 silver badges390 bronze badges
asked May 3, 2011 at 20:38
Jesse SmothermonJesse Smothermon
1,04110 gold badges25 silver badges36 bronze badges
Use the form Initialize event, e.g.:
Private Sub UserForm_Initialize()
TextBox1.Value = Format(Date, "mm/dd/yyyy")
End Sub
answered May 3, 2011 at 21:17
4
The easy way to do this is to put the Date function you want to use in a Cell, and link to that cell from the textbox with the LinkedCell property.
From VBA you might try using:
textbox.Value = Format(Date(),"mm/dd/yy")
answered May 3, 2011 at 21:08
Lance RobertsLance Roberts
22.2k32 gold badges112 silver badges129 bronze badges
1
Set the value from code on showing the form, not in the design-timeProperties for the text box.
Private Sub UserForm_Activate()
Me.txtDate.Value = Format(Date, "mm/dd/yy")
End Sub
answered May 3, 2011 at 21:20
Tim WilliamsTim Williams
150k8 gold badges96 silver badges124 bronze badges
Here’s a more simple version. In the cell you want the date to show up just type
=Today()
Format the cell to the date format you want and Bob’s your uncle.
Udo Held
12.3k11 gold badges69 silver badges93 bronze badges
answered Mar 29, 2012 at 20:46
2
You were close. Add this code in the UserForm_Initialize()
event handler:
tbxDate.Value = Date
Gaffi
4,3118 gold badges45 silver badges73 bronze badges
answered May 3, 2011 at 21:12
Arnoud KooiArnoud Kooi
1,5584 gold badges17 silver badges25 bronze badges
2
Actually, it is less complicated than it seems.
Sub
today_1()
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Value = Date
End Sub
Timothy
1,9703 gold badges26 silver badges28 bronze badges
answered Jun 2, 2016 at 6:27
1
I know this is extremely old post, but I’ve used this before
You can always adjust to activate. Now method is another way. Just an option
Private Sub UserForm_Initialize()
Textbox1.Text = Format(Now(), "mmddyyyhhmmss")
End Sub
answered Jan 17, 2018 at 17:12
Содержание
- VBA Excel. Функции для работы с датой и временем
- Функция Date
- Функция DateAdd
- Функция DateDiff
- Date and Time
- Year, Month, Day of a Date
- DateAdd
- Current Date and Time
- Hour, Minute, Second
- TimeValue
- Функции VBA для работы с датой/временем
- Excel vba текущая дата
- Автоматический ввод текущей даты в Excel
- Функция Now
- код VBA, чтобы автоматически тянулись дата и время (Формулы/Formulas)
- Макрос, фиксированные текущее время и дата (Фиксированные текущее время и дата)
- Определение и вывод текущей даты
- Вставка текущей даты
- Функция Date
- Автоматический ввод текущей даты в Excel
- VBA Excel поиск среди дат по текущему месяцу
VBA Excel. Функции для работы с датой и временем
Функции для работы с датой и временем в VBA Excel. Синтаксис, параметры, спецсимволы, примеры. Функции, возвращающие текущие дату и время по системному таймеру.
Функция Date
Синтаксис
Пример
Функция DateAdd
Синтаксис
Параметры
Параметр | Описание |
---|---|
interval | Обязательный параметр. Строковое выражение из спецсимволов, представляющее интервал времени, который требуется добавить. |
number | Обязательный параметр. Числовое выражение, задающее количество интервалов, которые необходимо добавить. Может быть как положительным (возвращается будущая дата), так и отрицательным (возвращается предыдущая дата). |
date | Обязательный параметр. Значение типа Variant/Date или литерал, представляющий дату, к которой должен быть добавлен интервал. |
Таблицу аргументов (значений) параметра interval смотрите в параграфе «Приложение 1».
Примечание к таблице аргументов: три символа – y, d, w – указывают функции DateAdd на один день, который необходимо прибавить к исходной дате number раз.
Пример
Функция DateDiff
Синтаксис
Параметры
Параметр | Описание |
---|---|
interval | Обязательный параметр. Строковое выражение из спецсимволов, представляющее интервал времени, количество которых (интервалов) требуется вычислить между двумя датами. |
date1, date2 | Обязательные параметры. Значения типа Variant/Date , представляющие две даты, между которыми вычисляется количество указанных интервалов. |
firstdayofweek | Необязательный параметр. Константа, задающая первый день недели. По умолчанию – воскресенье. |
firstweekofyear | Необязательный параметр. Константа, задающая первую неделю года. По умолчанию – неделя, в которую входит 1 января. |
Таблицу аргументов (значений) параметра interval смотрите в параграфе «Приложение 1».
Примечание к таблице аргументов: в отличие от функции DateAdd , в функции DateDiff спецсимвол «w» , как и «ww» , обозначает неделю. Но расчет осуществляется по разному. Подробнее об этом на сайте разработчиков.
Параметры firstdayofweek и firstweekofyear определяют правила расчета количества недель между датами.
Таблицы констант из коллекций firstdayofweek и firstweekofyear смотрите в параграфах «Приложение 2» и «Приложение 3».
Источник
Date and Time
Learn how to work with dates and times in Excel VBA.
Place a command button on your worksheet and add the code lines below. To execute the code lines, click the command button on the sheet.
Year, Month, Day of a Date
The following macro gets the year of a date. To declare a date, use the Dim statement. To initialize a date, use the DateValue function.
Dim exampleDate As Date
exampleDate = DateValue(«Jan 19, 2020»)
Note: Use Month and Day to get the month and day of a date.
DateAdd
To add a number of days to a date, use the DateAdd function. The DateAdd function has three arguments. Fill in «d» for the first argument to add days. Fill in 3 for the second argument to add 3 days. The third argument represents the date to which the number of days will be added.
Dim firstDate As Date , secondDate As Date
firstDate = DateValue(«Jan 19, 2020»)
secondDate = DateAdd(«d», 3, firstDate)
Note: Change «d» to «m» to add a number of months to a date. Place your cursor on DateAdd in the Visual Basic Editor and click F1 for help on the other interval specifiers. Dates are in US Format. Months first, Days second. This type of format depends on your windows regional settings.
Current Date and Time
To get the current date and time, use the Now function.
Hour, Minute, Second
The get the hour of a time, use the Hour function.
Note: Use Minute and Second to get the minute and second of a time.
TimeValue
The TimeValue function converts a string to a time serial number. The time’s serial number is a number between 0 and 1. For example, noon (halfway through the day) is represented as 0.5.
Now, to clearly see that Excel handles times internally as numbers between 0 and 1, add the following code lines:
Источник
Функции VBA для работы с датой/временем
- Date () — возвращает текущую системную дату. Установить ее можно при помощи одноименного оператора, например, так:
DateDiff () — возможность получить разницу между датами (опять таки в единицах от лет до секунд).
Dim lDaysCnt As Long lDaysCnt = DateDiff(«d», «20.11.2012», Now) MsgBox «С 20.11.2012 прошло дней: » & lDaysCnt
Первый аргумент определяет период времени, в котором необходимо вернуть разницу между датами. Допустимые значения:
«yyyy» Год
«q» Квартал
«m» Месяц
«y» День года
«d» День
«w» День недели
«ww» Неделя
«h» Час
«n» Минута
«s» Секунда
Наиболее полезна DateDiff при вычислении полных лет. Например, чтобы вычислить сколько лет на текущий момент человеку, в зависимости от даты рождения, можно использовать функцию так:
MsgBox DateDiff(«yyyy», «20.12.1978», Now)
Без этой функции вычислить кол-во полных лет гораздо сложнее.
DatePart () — функция возвращает указанную часть даты (например, только год, только месяц или только день недели), на основании заданной даты. Часто применяется для получения номера недели для даты.
Первый аргумент — период времени. Принимаемые значения те же, что и для функции DateDiff (годы, месяцы, недели и т.д.)
Второй аргумент — непосредственно дата, часть которой необходимо получить:
MsgBox «Номер недели года: » & DatePart(«ww», Now)
MsgBox DateSerial(2012, 6, 7)
Аналогичным образом (для времени) работают TimeSerial () и TimeValue ()
Источник
Excel vba текущая дата
Автоматический ввод текущей даты в Excel
Смотрите также If End Sub находятся реактивы, срок
при редактировании таблицы
Все имена занятыPrivate Sub Command1_Click() моем понимании означает, Date обидеть, формула нормальная, словом итерации. вставке фиксированнойФункция не имеет аргументов А, удалялась и Alt+F11 появлении значения в
строкам, типа:: Могу только посоветоватьSOV1Kubuntovod
годности которых истекает в диапазоне A1:I50,: Добавил строку. Dim objFSO As что она неизменна.SpecialCells(4).Offset(, 1).ClearContents
но, действительно, всеkim
даты и времени,Пример дата. А то3 в окне 7-ом столбце вIf Target.Column = изменить макрос или: Всем доброго времени: Если в ячейке
в этом месяце. в ячейке G23Sub макрос2() ‘
FileSystemObject Dim objFile до следующего редактированияEnd With время пытает меня,: http://www.excelworld.ru/forum/2-254-1 в заданную ячейку.’ Выводим текущую системную
получается если в Project-VBAProject щёлкните 2 6-ом отображалась дата 1 And Target.Row защиту.
суток. только дата, тоМысль по поводу
постоянно менялась дата Сочетание клавиш: Ctrl+d As File Set ячейки A1.
End Sub сохранить или нетЧто автора раздражает Вставка должна производиться дату и время колонке А (даже раза на имени ввода этого значения.
> 4 ThenЕсли Вы хотитеТакая вот задача: всё просто: автофильтра не подходит, и время при ActiveCell.Value = Format(Now,
objFSO = New
Обработку событий (можетЕще интересней:-)
изменения, при включенных итерациях
по условию,
Dim Today Today= пустой) нажать клавишу
листа, где находитсяНадо чтоб работалоSOV1 воспользоваться моим кодом,
при выборе значенияIf Month(Cells(i, j))
т.к. необходимо видеть каждом редактировании.
«dd.mm.yyyy») ActiveCell.EntireColumn.AutoFit End
FileSystemObject Set objFile это неправильно, подсмотрел
Мурдаже если я так и ненапример, если A1<>«»,
Now Del, то тоже Ваша таблица
это все со: Димит, еще раз то разместите его из списка в
= Month(Date) Then всю таблицу, аИ еще не Sub
= objFSO.GetFile(«C:TempBook1.xls») MsgBox в другой теме): Здравствуйте, их не вносил,
понял. то в ячейке’ узнаем текущую
происходит запись даты4 скопируйте код 2-ой строки. большое спасибо! Изначальная в модуле вашего одной ячейке таблицы . не только строки знаю, такое возможноpashulka Format$(objFile.DateCreated, «DD_MM_YYYY») Set тоже уже запускалKuklPа при открытииИ если итерации B1 вставка даты, системную дату и
в соответствующий столбец. и вставьте вЕсли не трудно цель достигнута. Получилось листа. Он запускается — в другойJulyMar удовлетворяющие запросу. или нет, чтобы: Если нужна всё-таки objFSO = NothingSub emergency() ‘восстановитьи напоминает о циклицеской выключены, как это в противном случае время ‘ ПреобразуемА нужно время основное поле редактора объясните как это следующее (может еще на событие изменения ячейке должна появиться: Спасибо огромное заЗаранее благодарна! прописывался пользователь, который дата, то :
Set objFile = обработку событий
nilem ссылке. может работать? B1=»».
в строку и от времени очищать5 сохраните файл сделать от А кому-нибудь пригодится): при
листа, конкретно ячеки текущая дата. И быстрый ответ! Очень
Пытаюсь оперировать с внес изменения вActiveCell.NumberFormat = «dd/mm/yyyy» Nothing End SubNeApplication.EnableEvents = True.Это все меняSerge_007Данное правило должно
выводим на форме
таблицу полностью. и закройте редактор до Я т.к. появлении значения в — А1. самое главное - выручили! Datepart, возможно делаю, таблицу. ActiveCell.Value = Date zabud»te snachala ustanovit»End Sub
Взял ваши коды настораживает, а про: Привет. Я думал работать и в Print CStr(Today)
Заранее спасибо! VBA
я не ориентируюсь столбце №7 в
SOV1 дата не должнаKubuntovod что-то не то,
К примеру: я ActiveCell.Columns.AutoFit reference na ScriptingНе помогает. и скопировал себе, итерацию я собираюсь
здесь кто-то выкладывал. остальных ячейках столбцовСмотри также
gera_vip6 измените ячейку совсем (( могу
ячейках с 4: Димит, ваш макрос
больше изменяться, тк: Внимательнее перечитал задание пока ничего не внес изменения вDate
Runtimenilem при этом у
только сейчас почитать.А на Планете A и B.
Date: Помогли решить проблему! в 7 столбце лишь макрос создать
по 2000 и очень даже оказался таблица редактируется в и понял, что выходит! ячейку B7, в
Date$Uspehov: Если так, то меня они работают
Мур искать по слову
В дальнейшем вставленныеКатегорияЕсли кому-то пригодится: и убедитесь в и то не в столбце №13 нужным, только не течение месяца. надо смотреть наSub Анализ_истечения_СроковГодности () ячейке G23 смениласьФункцияvladconn вот кодец: только с ручника.: Serge_007, вот такая «итерация» это всё даты не должныФункции дат иPrivate Sub Worksheet_Change(ByVal работе макроса работает почему-то (( в ячейках с хватило нам тямуSOV1 дату окончания срока Dim i As дата на 23.10.2015Datekalamees200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub Worksheet_Change(ByVal TargetЯ мало в примерно была формула: равно что по изменяться.
времени Target As Range)842-й
заранее спасибо!
4 по 2000 распространить его действие
: Нет желающих помочь?
годности и сравнивать String, mon As 11:44, а впозволяет получить текущую: Vrode rabotaet, no As Range) этом понимаю, так200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(ТДАТА()»»;B1;»»)) слову «эксель» искатьРанее я получилGalaDoker For Each cell: Здравствуйте, все сделалДимит
Функция Now
на весь столбец. Слишком сложно или её с последним String Dim mydate ячейке G24 сменилась системную дату по ne tak. If Target.Count > и должно быть. KuklP
Мур на форуме информацию,: Еще один вопрос In Target If по вашей инструкции: Private Sub Worksheet_Change(ByVal этих ячеек появляетсяПомогите, плиз! наоборот? днём текущего месяца.
запись на giroes. системному календарю компьютераData 9.11.2005, a
: Автофильтр по столбцу
:как этого добиться по другой теме cell <> «» и получилось =))) Target As Range) дата и большеДимитДимитDateDelimiter = Mid(Format(Date,
As Date mydate
Мне это нужно
Возвращаемое значение
mne nado polu4itj Sub
код VBA, чтобы автоматически тянулись дата и время (Формулы/Formulas)
что я делаю А — непустые.KuklP
с помощью формул,Написан код VBA, Then If Not спасибо огрмное. очень If Target.Cells.Count = не изменяется.: Замените строку: При изменении А1 «General Date»), 3, = Date mydate для того, чтобыDate 09.11.2005. Mozno kone4noIf Intersect(Me.UsedRange.Columns(1), Target) неправильно? Дальше выделяем колонку
, спасибо, завтра уже только там циклическая чтобы при вводе Intersect(cell, Range(«W9:W3000»)) Is
помогло. 1 And Target.Column
Private Sub Worksheet_Change(ByValIf Target.Address = в В1 появится
1) ed = = DatePart(«m», Now) знать когда ивозвращает значение типа 4erez «IF» sdelatj,
Макрос, фиксированные текущее время и дата (Фиксированные текущее время и дата)
Is Nothing ThenSerge_007 Б в таблице.
попробую Ваш код ссылка. текста в любой
Nothing Then Withgera_vip = 7 And Target As Range)
«$A$1» Then дата, но если Array(31, 28, 31, ‘ Текущая дата кем последний раз
Variant субтитпа Date, no mozet programmno Exit Sub: И Вам тоже
F5-выделить-только видимые - применить.Это все время
ячейке в первом cell.Offset(0, -1) .Value
: Дабы не создавать Target.Row > 1 If Target.Column =на
ячейка В1 пуста 30, 31, 30,
MsgBox mydate D редактировалась таблица. Date$
mozno?Application.EnableEvents = False
здравствуйте ctrl+; — ctrl+Enter.
Отпишусь обязательно. раздрожает. столбце файла проставлялись
= Date .EntireColumn.AutoFit
новую тему, спрошу
Then Target.Offset(0, -1)
7 And Target.Row
If Target.Column =
(т.е. первый раз).
31, 31, 30,
= Sheets(«ЖУ_СО»).Range(«F5») ‘ДатаАпостроффвозвращает данные типаVladConnIf Target =
Что Вы имеете ввиду?МурТолько как автофильтрыKuklP
текущие дата и End With End здесь. = Date End > 3 _
1 ThenНе знаю это
31, 30, 31) окончания срока годности: Попробуйте — Private String, содержащее текущую
: Ne znayu, na «» Then Target.NextЗЫ Я понимаю слово
: Техника по автофильтру для этих целей:
время. Дата и If End IfНашел код, который If End SubНу And Target.Row Public Sub www() время тянутся системные. Next cell End добавляет дату. обьяснять тут особо 2000 Then If
1 — этоPrivate Sub Worksheet_Change(ByVal m = Month(Date) Sheets(«ЖУ_СО»).Range(«G5») ‘Срок хранения
As Range) Application.EnableEvents даты, возвращаемый функцией, raz vse pravil»no:
Target.Next = Now тормоз».А с макросомМур
Dim c As Можно, не меняя SubPrivate Sub Worksheet_Change(ByVal
не чего Target.Offset(0, 0).Value = номер столбца, т.е. Target As Range)
‘Текущий месяц числом в месяцах, формат
= False If определяется национальными системными po dve poziciiApplication.EnableEvents = True
Мур пока еще не
: Range системное время, установить
Now Target As Range)Макрос срабатывает на «да» Then If
«А» If Target.Address = y = Year(Date)
ячейки числовой. i
Not Intersect(Target, [a1:i50]) установками na den» iEnd Sub: С ручника, в пробовал, напишу позже.Serge_007
For Each c другой часовой пояс,Функция
For Each cell изменение одной ячейки Target.Offset(0, 1).Value =
Димит «$A$1» Then If
‘Текущий год If
= DateAdd(«m», m, Is Nothing Then
Параметры na mesyac.
Это надо вставить
моем понимании, значитnilem, Вам не успел
In ActiveSheet.UsedRange.Columns(1).Cells
чтобы тянулось время,
Now
in Target ‘проходим
в 7 столбце
«» Then Target.Offset(0,: Замените строку Target.Offset(0, 1).Value =
m = 2 D) ‘функция добавления
[g23] = Now
Функция не имеет аргументов
VladConn в модуль листа
что их приходтся
: Так интереснее получается
ответить,
c(, 2) =
например, точно попозволяет быстро узнать по всем измененным и строке 2 1) = DateIf Target.Address =
«» Then Target.Offset(0, And (y Mod к текущей дате [g24] = Environ$(«username»)Пример
: I nikakix tochek, (ПКМ по ярлычку запускать вручную.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub tyutyu()kim IIf(c = «»,
Москве. Если да, текущую дату и ячейкам If Not
End If End «$A$1» Then 1) = Date
4) <> 0 срока хранения Range(«T5») End If Application.EnableEvents’ Выводим текущую системную kstati: znaki podcherkivaniya.
листа — ИсходныйSerge_007Dim pz As
меня опередил,
«», Date) подскажите, как это время по системному Intersect(cell, Range(«A2:A1048576»)) Is
Макрос должен находится If End Ifна End If End Then td =
= i Dim = True End дату в заголовке Vi Format$ primenili? текст).: А Вам как Range
это его решениеNext прописать в коде. календарю и часам Nothing Then ‘если
в модуле листа. If Target.Column =If Target.Column = If End Sub
CStr(ed(m — 1)) X As Range:
Sub
формы Dim Today
kalamees
kalamees надо?For Each pz
было с помошьюEnd Sub
_Boroda_ компьютера. Чтобы получить измененная ячейка попадает
842-й 13 And Target.Row 1 Then
SOV1
Else td = Set X =giroes Today=
: da ,spasibo. Razobralsja.
: Kak mozno opredelitj
По какому событию? In Range(«A1:A100») формул, наверное яили без цикла:: Если всегда минус
Определение и вывод текущей даты
только системную дату в диапазон A2:A1048576: Спасибо. )) > 3 _в данном случае
: Спасибо, Димит, что «29» ‘Високосный год Лист11.Range(«t4:t10000»).Find(mydate) If X: Спасибо Вам большое!
Date
Регина123 tekuzuju datu iМурIf Len(pz) Then его обидел.
Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub www1() 4 часа, то без времени, используйте
With cell.Offset(0, 4)А это как?
And Target.Row
Вставка текущей даты
списывать реактивы не вопросом, очень выручили. Преобразуем в строку у кого-нить естьA lu4she opredelitj так: = Date потом, действительно, каждыйEnd Sub — CDate(«4:00»)
что пользователь может (чем выше цифра, (( «да» Then If
SOV1 написать макрос вставки «0» & CStr(m) нужно! msg =
JulyMar и выводим в
макрос,который позволяет вставлять datu sozdanija dokumentaЗаполняем ячейку A1,Elseраз при открытии
Только все этоGalaDoker самостоятельно устанавливать системное
тем дальше ячейка)вот что мне Target.Offset(0, 1).Value =
Функция Date
: Огромное Вам спасибо,
даты при нажатии
Else tm = «Нет реактивов, у: Добрый день, уважаемые заголовке формы Form1.Caption текущую дату с
i predstavitj datu
появляется фиксированная текущаяpz.Next = «» файла, эти пытки с помощью автофильтра: Спасибо, это решило время и дату .Value = Date надо сделать чтобы «» Then Target.Offset(0, Димит.
CStr(m) ‘Месяц прописью
которых выходит срок форумчане! = CStr(Today) учетом ширины столбца v etom vide? дата и времяEnd If с вопросами по делается за 3 проблему на своем компьютере, ‘Дата .EntireColumn.AutoFit ‘выполняем у меня в
1) = Date
И, чтобы закончить
этот вариант тоже (01, 02 .
Автоматический ввод текущей даты в Excel
годности в этомПодкиньте пожалуйста идею
Смотри также (автободпор ширины), тоZaraneje spasibo programmjoram
в ячейке BNext циклическим ссылкам. секунды без макросовGalaDoker поэтому эти значения автоподбор ширины для
документе работало то, End If End этот вопрос: как интересный. 12) tdt = месяце!» MsgBox msg
как реализовать поискNow есть макрос аналогичныйMasalov 1.End SubВообще, не в и формул.
: _Boroda_, смогу поставить могут не иметь столбца B, чтобы что вы написали If End If
сориентировать макрос наТолько объясните «чайнику» td & DateDelimiter Else r = по текущему месяцуКатегория сочетанию клавиш CTRL+;: 1) например MsgBoxДалее, если вносимKuklP курсе что такоеSerge_007
вам «+» к ничего общего с
дата умещалась в выше ? End Sub
VBA Excel поиск среди дат по текущему месяцу
определенный диапазон ячеек. — у нас & tm &
X.Row n = среди значений вФункции дат иНа данный момент Day(Date) & «_» изменения в ячейку: Да Николай, это итерация, но попробую: Киньте ссылку на репутации только через реальной датой и ячейке End WithИзвините за откровенную842-й
Напимер с А5 макрос запускается кнопкой, DateDelimiter & CStr(y) Sheets(«ЖУ_СО»).Cells(r, 2) MsgBox столбце с датами. времени
есть макрос,который вставляет
& Month(Date) & А1, то опять я прозевал. разобраться. тему, где Вы
23 часа временем! End If Next безграмотность в этом: Товарищи, помогите пожалуйста! до А100? (просто а как подключить ‘Дата последнего дня «Вышел срок годности Т.е. имеем столбецgiroes дату,но без подбора «_» & Year(Date) вставляется обновленная текущаяНу тогда так,Мур взяли такое решение.МурВозвращаемое значение cell End SubМожет вопросе.Я абсолютно не в первых строках данный макрос? текущего месяца прописью у » & с различными датами: Здравствуйте! ширины.2) по дате дата и время без цикла::KuklP: Добрый вечер! илиВозвращает значение типа Variant(Date), ли кто-то подсказать,Димит знаю МVB но идет шапка таблицы. )И еще макрос If D Sub www1()
kim: Привет, тезка. Виктор добрый. содержащее текущую дату
Источник
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
Inserting date time in Excel using VBA is as simple as writing a formula in a Cell.
The VBA timestamp code is:
Range(“A1”).value = Format(Now, «mm/dd/yyyy HH:mm:ss»)
This code will show the current date and time in cell A1. And yeah, that is it. it’s done.
The “Now” function returns current date and time, and “Format” function formats the output into «mm/dd/yyyy HH:mm:ss» format.
Show date and time whenever a change is made using VBA.
Let’s say you have prepared a sheet. In this sheet, you want time to be shown in column B whenever someone does an entry Column A.
Now we need a VBA timestamp code that runs every time when change is made in column A.
The below code gets the work done easily.
Run Macro When A Change is Made (Worksheet Change Event Handler)
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing ThenOn Error Resume Next If Target.Value = "" ThenTarget.Offset(0, 1) = "" Else Target.Offset(0, 1).Value = Format(Now, "mm/dd/yyyy HH:mm:ss") End If End If End Sub
To run this code, open VBA and double click on the sheet in the project window on which you want to show timestamp.
Now we have to use VBA event handler since we want to run our code to run every time when a change is made.
From the drop-down above your code, select Worksheet.
Now adjacent to worksheet drop down, you see another drop down. It contains a lot of event handlers. For now, select “change”.
Now copy the above code here.
And it is done. Get back to your sheet and check it.
Code Explanation:
- The code is written on sheet1 by double-clicking on it. It means your code belongs to only this sheet.
- We used “Change” event handler of “Worksheet” to trigger our VBA Code.
-
Private Sub Worksheet_Change(ByVal Target As Range)
This is the fixed and default subroutine name of a change event handler.
- We want our code to run change is made only in column A.
-
If Not Intersect(Target, Range("A:A")) Is Nothing Then
This line checks if the changed cell is in column A or not.
- Now, if the above line returns True, then these lines are executed
On Error Resume Next If Target.Value = "" ThenTarget.Offset(0, 1) = "" ElseTarget.Offset(0, 1).Value = Format(Now, "mm/dd/yyyy HH:mm:ss")
The first line ignores error pop and runs these two lines. If you omit On Error Resume Next you will see error popping up when you delete a value in column A.
If Target.Value = "" Then
:- This line checks if a cell in column A is blank. If yes then
Target.Offset(0, 1) = ""
:- This line deletes adjacent cell value.
And if False
Else Target.Offset(0, 1).Value = Format(Now, "mm/dd/yyyy HH:mm:ss")
:- This line enters the current time and date in adjacent of A column.
- And the last three lines just close their respective block. And it’s done. Now you have a sheet that gives an exact time of change made in a cell of column A.
You may have noticed that there are several event handlers in the drop-down list. Play around them. Try to figure out what each event handler works. And if have any difficulty, write it down in the comments section.
Excel VBA Date
There are some functions which are really very handy, and we choke our life without those functions being a VBA user. DATE function is one of those functions which can be really very useful at times and can make life easier for a programmer. In an Excel spreadsheet, there is a function called TODAY() which gives the current date as a result based on the system date. On similar lines, VBA has DATE function which gives current date based on the system date.
The VBA DATE function returns the current date based on system date as a result and has really very simple syntax.
This function does not have any argument to be passed comes with the name of the function and empty parentheses. It is not mandatory to add the parentheses as well while calling this function. Isn’t this function really simple in nature?
The syntax of DATE function in VBA.
How to Use Excel VBA Date Function?
We will learn how to use a VBA Date function with few examples in excel.
You can download this VBA Date Excel Template here – VBA Date Excel Template
VBA Date Function – Example #1
Suppose, you wanted to see the current date in MsgBox. How can you do that? Just follow the steps below and you’ll be through.
Step 1: Insert a new module in your Visual Basic Editor.
Step 2: Define a sub-procedure to write create and save a macro.
Code:
Sub DateEx1() End Sub
Step 3: Define a variable named CurrDate which can hold the value of the current date. Since, we are about to assign a date value to the variable, make sure you are defining it as a date.
Code:
Sub DateEx1() Dim CurrDate As Date End Sub
Step 4: Using the assignment operator, assign a value of the current system date to the variable newly created. You just need to add DATE in order to assign the date value. Use the following piece of code:
Code:
Sub DateEx1() Dim CurrDate As Date CurrDate = Date End Sub
Step 5: Use MsgBox to be able to see the current system date under Message Box prompt. Use the line of code given below:
Code:
Sub DateEx1() Dim CurrDate As Date CurrDate = Date MsgBox "Today's Date is: " & CurrDate End Sub
Step 6: Hit F5 or run button manually to Run this code. You’ll be able to see a Message Box as shown in below screenshot with the current date.
Note that, the date shown here in the screenshot is the date I have run this script at. You may be getting a different date at the time you run this code, based on your system date.
This is the simplest example of getting the current date. You can also use Cells.Value function to get the date value in a particular cell of your excel sheet.
VBA Date Function – Example #2
Home Loan EMI payment due date
Suppose I have a worksheet and I need a system to show me a message “Hey! You need to pay your EMI today.” Every time I open my sheet and the value in cell A1 is the current system date. Let’s see step by step how we can do that.
Step 1: Insert a new module and define a new sub-procedure named auto_open() to create a macro. auto_open() allows your macro to run automatically every time you open the worksheet.
Code:
Sub auto_open() End Sub
Step 2: Use If condition to assign the value of the current date in cell A1 of worksheet HomeLoan_EMI.
Code:
Sub auto_open() If Sheets("HomeLoan_EMI").Range("A1").Value = Date End Sub
Step 3: Now, use Then on the same line after IF so that we can add a statement which will execute as long as if-condition is true.
Code:
Sub auto_open() If Sheets("HomeLoan_EMI").Range("A1").Value = Date Then End Sub
Step 4: Add a statement to be executed for the condition which is true.
Code:
Sub auto_open() If Sheets("HomeLoan_EMI").Range("A1").Value = Date Then MsgBox ("Hey! You need to pay your EMI today.") End Sub
This statement will pop-up under Message Box as soon as the If a condition is true.
Step 5: As we know, every IF condition always needed an Else condition. Add an Else condition to this loop.
Code:
Sub auto_open() If Sheets("HomeLoan_EMI").Range("A1").Value = Date Then MsgBox ("Hey! You need to pay your EMI today.") Else Exit Sub End Sub
This else condition will terminate the automatic opening of Macro if a date in cell A1 is not the current system date.
Step 6: Finally, End the IF loop by using statement End IF.
Code:
Sub auto_open() If Sheets("HomeLoan_EMI").Range("A1").Value = Date Then MsgBox ("Hey! You need to pay your EMI today.") Else Exit Sub End If End Sub
Step 7: This is it, now every time you open your worksheet the system will automatically run the above code and see if the date value in cell A1 is your EMI due date or not. If the EMI due date equals to the system date, it will show the message as below:
VBA Date Function – Example #3
VBA Date to Find out the Credit Card Bill Payee
Suppose I have a list of customers who have a credit card and you want to know who has payment due today. So that you can call them and ask them to pay their due immediately by EOD.
VBA Date could be handy in allowing you to automate the things instead of checking the dates one by one. Let’s see how to do this step by step:
Step 1: Define a New macro using a sub-procedure under a module.
Code:
Sub DateEx3() End Sub
Step 2: Define two new variables one of which will be useful in looping the code up and another one in order to hold the value of the current system date.
Code:
Sub DateEx3() Dim DateDue As Date Dim i As Long DateDue = Date i = 2 End Sub
Step 3: Now use the following piece of code which helps in searching the person who has a credit card bill due date as the current system date. This code allows checking the Customer who has bill payment due on the current system date along with the bill amount.
Code:
Sub DateEx3() Dim DateDue As Date Dim i As Long DateDue = Date i = 2 For i = 2 To Sheets("CC_Bill").Cells(Rows.Count, 1).End(xlUp).Row If DateDue = DateSerial(Year(DateDue), Month(Sheets("CC_Bill").Cells(i, 3).Value), Day(Sheets("CC_Bill").Cells(i, 3).Value)) Then MsgBox "Customer Name : " & Sheets("CC_Bill").Cells(i, 1).Value & vbNewLine & "Premium Amount : " & Sheets("CC_Bill").Cells(i, 2).Value End If Next i End Sub
Step 4: Run this code by hitting F5 or Run button manually and see the output.
On the first iteration, we can see that Mohan is the one who has Bill of 12,900 due on 29-Apr-2019 (Current system date on which this code is run). If we hit OK, we can see the next customer name who has a bill due on 29-Apr-2019 (Rajani is the next).
This code will really be handy when you are having millions of rows of customers who have their bill due on one particular day. Please note that all the scripts mentioned in this article are run on 29-Apr-2019. You might get different date value when you run this sample codes based on the system date.
Things to Remember
- VBA DATE function returns the current system date and as parallel to Excel’s TODAY() function.
- VBA DATE function does not have any argument to be passed in excel. Doesn’t even need the parentheses to be called while using this function in the code.
- VBA DATE is a non-volatile function in excel.
- VBA stores Date values as DATE at the time of execution. So, does not define a variable holding value as a String/Integer. It will cause an error during execution of the code.
Recommended Articles
This has been a guide to Excel VBA Date. Here we have discussed how to use Excel VBA Date Functions along with practical examples and downloadable excel template. You can also go through our other suggested articles –
- VBA Date Format
- VBA GoTo
- VBA RGB
- VBA DateSerial