Vba excel как вставить дату

Функции для работы с датой и временем в 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
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   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.'s user avatar

H.B.

160k28 gold badges316 silver badges390 bronze badges

asked May 3, 2011 at 20:38

Jesse Smothermon's user avatar

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

Graham's user avatar

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 Roberts's user avatar

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 Williams's user avatar

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's user avatar

Udo Held

12.3k11 gold badges69 silver badges93 bronze badges

answered Mar 29, 2012 at 20:46

Todd Coffman's user avatar

2

You were close. Add this code in the UserForm_Initialize() event handler:

tbxDate.Value = Date

Gaffi's user avatar

Gaffi

4,3118 gold badges45 silver badges73 bronze badges

answered May 3, 2011 at 21:12

Arnoud Kooi's user avatar

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's user avatar

Timothy

1,9703 gold badges26 silver badges28 bronze badges

answered Jun 2, 2016 at 6:27

George Gru's user avatar

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

Casey M's user avatar

Содержание

  1. VBA Excel. Функции для работы с датой и временем
  2. Функция Date
  3. Функция DateAdd
  4. Функция DateDiff
  5. Date and Time
  6. Year, Month, Day of a Date
  7. DateAdd
  8. Current Date and Time
  9. Hour, Minute, Second
  10. TimeValue
  11. Функции VBA для работы с датой/временем
  12. Excel vba текущая дата
  13. Автоматический ввод текущей даты в Excel
  14. Функция Now
  15. код VBA, чтобы автоматически тянулись дата и время (Формулы/Formulas)
  16. Макрос, фиксированные текущее время и дата (Фиксированные текущее время и дата)
  17. Определение и вывод текущей даты
  18. Вставка текущей даты
  19. Функция Date
  20. Автоматический ввод текущей даты в Excel
  21. 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 ()

  • Day (), Year (), Month (), Weekday (), Hour (), Minute (), Second () — специализированные заменители функции DatePart() , которые возвращают нужную часть даты/времени (которую именно — видно из названия).
  • MonthName () — возвращает имя месяца словами по его номеру. Возвращаемое значение зависит от региональных настроек. Если они русские, то вернется русское название месяца.
  • Timer () — возвращает количество секунд, прошедших с полуночи.
  • Источник

    Excel vba текущая дата

    Автоматический ввод текущей даты в Excel

    ​Смотрите также​​ If End Sub​ находятся реактивы, срок​
    ​ при редактировании таблицы​
    ​Все имена заняты​Private Sub Command1_Click()​ моем понимании означает,​ Date​ обидеть, формула нормальная,​ словом итерации.​ вставке фиксированной​Функция не имеет аргументов​ А, удалялась и​ Alt+F11​ появлении значения в​

    ​ строкам, типа:​​: Могу только посоветовать​SOV1​Kubuntovod​

    ​ годности которых истекает​​ в диапазоне A1:I50,​: Добавил строку.​ Dim objFSO As​ что она неизменна​.SpecialCells(4).Offset(, 1).ClearContents​
    ​но, действительно, все​kim​
    ​даты и времени,​Пример​ дата. А то​3 в окне​ 7-ом столбце в​If Target.Column =​ изменить макрос или​: Всем доброго времени​: Если в ячейке​

    ​ в этом месяце.​​ в ячейке G23​Sub макрос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 = Nothing​Sub emergency() ‘восстановить​и​ напоминает о циклицеской​ выключены, как это​ в противном случае​ время ‘ Преобразуем​А нужно время​ основное поле редактора​ объясните как это​ следующее (может еще​ на событие изменения​ ячейке должна появиться​: Спасибо огромное за​Заранее благодарна!​ прописывался пользователь, который​ дата, то :​

    ​ Set objFile =​​ обработку событий​
    ​nilem​ ссылке.​ может работать?​ B1=»».​
    ​ в строку и​ от времени очищать​5 сохраните файл​ сделать от А​ кому-нибудь пригодится): при​
    ​ листа, конкретно ячеки​ текущая дата. И​ быстрый ответ! Очень​
    ​Пытаюсь оперировать с​ внес изменения в​ActiveCell.NumberFormat = «dd/mm/yyyy»​ Nothing End SubNe​Application.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_vip​​6 измените ячейку​ совсем (( могу​
    ​ ячейках с 4​: Димит, ваш макрос​
    ​ больше изменяться, тк​: Внимательнее перечитал задание​ пока ничего не​ внес изменения в​Date​
    ​ Runtime​nilem​ при этом у​
    ​ только сейчас почитать.​А на Планете​ 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.2015​Date​kalamees​200?’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 kone4no​If Intersect(Me.UsedRange.Columns(1), Target)​ неправильно?​ Дальше выделяем колонку​

    ​, спасибо, завтра уже​​ только там циклическая​ чтобы при вводе​ Intersect(cell, Range(«W9:W3000»)) Is​
    ​ помогло.​ 1 And Target.Column​

    ​Private Sub Worksheet_Change(ByVal​​If Target.Address =​ в В1 появится​

    ​ 1) ed =​​ = DatePart(«m», Now)​ знать когда и​возвращает значение типа​ 4erez «IF» sdelatj,​

    Макрос, фиксированные текущее время и дата (Фиксированные текущее время и дата)

    ​ Is Nothing Then​​Serge_007​ Б в таблице.​
    ​ попробую Ваш код​ ссылка.​ текста в любой​
    ​ Nothing Then With​gera_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») ‘Дата​Апострофф​возвращает данные типа​VladConn​If 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​ Можно, не меняя​ Sub​Private Sub Worksheet_Change(ByVal​

    ​ не чего​​ Target.Offset(0, 0).Value =​​ номер столбца, т.е.​​ Target As Range)​
    ​ ‘Текущий месяц числом​ в месяцах, формат​
    ​ = False If​ определяется национальными системными​ po dve pozicii​Application.EnableEvents = True​
    ​Мур​ пока еще не​
    ​:​ Range​ системное время, установить​
    ​Now​ Target As Range)​Макрос срабатывает на​ «да» Then If​

    ​ «А»​​ If Target.Address =​ y = Year(Date)​
    ​ ячейки числовой. i​

    ​ Not Intersect(Target, [a1:i50])​​ установками​ na den» i​End 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) = Date​​If 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_007​Dim 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​
    ​ в ячейке B​Next​ циклическим ссылкам.​ секунды без макросов​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!

    automacro

    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:

    Declaring a Date variable in VBA

    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.

    1

    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.

    2

    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.

    3

    Now adjacent to worksheet drop down, you see another drop down. It contains a lot of event handlers. For now, select “change”.

    4

    Now copy the above code here.

    5

    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.
     

    VBA Date

    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.

    Syntax of DATE

    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.

    Example 1

    Step 2: Define a sub-procedure to write create and save a macro.

    Code:

    Sub DateEx1()
    
    End Sub

    VBA Date Example 1-2

    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

    VBA Date Example 1-3

    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

    VBA Date Example 1-4

    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

    VBA Date Example 1-5

    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.

    Result of Example 1

    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

    VBA Date Example 2-1

    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

    VBA Date Example 2-2

    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

    VBA Date Example 2-3

    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

    VBA Date Example 2-4

    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

    VBA Date Example 2-5

    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

    VBA Date Example 2-6

    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:

    Result of Example 2

    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.

    Example 3

    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

    VBA Date Example 3-2

    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

    VBA Date Example 3-3

    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

    VBA Date Example 3-4

    Step 4: Run this code by hitting F5 or Run button manually and see the output.

    VBA Date Example 3-5

    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).

    Result of Example 3-1

    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.

    Result of Example 3-2

    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 –

    1. VBA Date Format
    2. VBA GoTo
    3. VBA RGB
    4. VBA DateSerial

    Понравилась статья? Поделить с друзьями:
  • Vba excel как включить 2019
  • Vba excel как включить 2016
  • Vba excel как адрес активной ячейки
  • Vba excel кавычки в тексте
  • Vba excel кавычки в кавычках