Excel vba текущая дата
3.9.5 Функции для работы с датой и временем
Функции VBA для работы с датой/временем, функции Date(), Time(), DateAdd(), DateDiff(), DatePart(), DateSerial(), Timer()
Без функций даты и времени обычно обойтись просто невозможно. Самые важные функции VBA для работы с датой/временем:
- Date() — возвращает текущую системную дату. Установить ее можно при помощи одноименного оператора, например, так:
- Time() возвращает текущее системное время, а Now() — дату и время вместе.
- DateAdd() — возможность добавить к дате указанное количество лет, кварталов, месяцев и так далее — вплоть до секунд.
- DateDiff() — возможность получить разницу между датами (опять таки в единицах от лет до секунд).
- DatePart() — очень важная функция, которая возвращает указанную вами часть даты (например, только год, только месяц или только день недели).
- DateSerial() — возможность создать значение даты на основе передаваемых символьных значений. То же самое делает DateValue(), отличия — в формате принимаемых значений. Аналогичным образом (для времени) работают TimeSerial() и TimeValue().
- Day() (а также Year(), Month(), Weekday(), Hour(), Minute(), Second()) — специализированные заменители функции DatePart(), которые возвращают нужную вам часть даты.
- MonthName() — возвращает имя месяца словами по его номеру. Возвращаемое значение зависит от региональных настроек. Если они русские, то вернется русское название месяца.
- Timer() — возвращает количество секунд, прошедших с полуночи.
Если нужно получить дополнительные возможности работы с датой/временем, то в вашем распоряжении объектная модель Outlook. Например, при помощи нее можно получить информацию о праздниках и рабочих/нерабочих днях большинства стран мира. Подробнее — в соответствующем разделе.
VBA Excel. Автоматическая запись текущей даты и времени
Автоматическая запись текущей даты и времени в первую ячейку новой строки базы данных на листе Excel с помощью кода VBA при выборе второй ячейки этой строки.
Если в базу данных, организованную на листе Excel, приходится ежедневно вносить несколько десятков записей, просто необходимо обеспечить возможность автоматического заполнения первой ячейки каждой новой записи текущей датой (если, конечно, текущая дата предусмотрена в вашей базе данных). И, конечно, первому столбцу, в который будет записываться дата, необходимо задать подходящий формат отображения даты и, если нужно, времени.
Самый простой код для записи даты
Для автоматической записи текущей даты и времени в первую ячейку очередной записи базы данных на листе Excel, необходимо открыть редактор VBA Excel и в проводнике дважды кликнуть на листе с базой данных, чтобы открылся модуль листа, в который поместить следующую процедуру с проверкой условия, что ячейка выбрана именно во втором столбце:
При выборе ячейки во втором столбце таблицы, в первую ячейку автоматически записываются текущие дата и время. Записываются они независимо от того, занята первая ячейка или пустая, если она не пустая, то значение перезаписывается. Чтобы случайно не перезаписать нужную дату, случайно выбрав вторую ячейку уже заполненной записи внутри таблицы, необходимо добавить дополнительное условие, как в коде ниже.
Добавление второго условия в процедуру
При выборе второй ячейки заполняемой строки, если первая ячейка пуста, в неё автоматически записываются текущие дата и время. Если ячейка не пуста, то перезаписи значения не произойдет. Но, в данном случае, при выборе ячейки во втором столбце ниже первой пустой строки, дата будет также записываться в первую ячейку, что не совсем удобно.
Запись текущей даты с учетом трех условий
Можно добавить еще условие, при котором текущая дата будет записываться, если только ячейка в первом столбце и строкой выше непустая.
Вариант для практического использования
Если использовать предыдущую процедуру, то при выборе любой ячейки в первой строке генерируется ошибка. Она возникает из-за того, что, когда выбрана ячейка в первой строке, ячейки Cells(ActiveCell.Row — 1, 1) не существует. Чтобы избежать этой ошибки, необходимо добавить в первую группу условий проверку на то, что индекс строки выбранной ячейки не равен единице, а проверку ячейки Cells(ActiveCell.Row — 1, 1) вынести во второй блок If . End If, который будет выполняться только при выполнении условий первого блока.
Эту процедуру можно использовать на практике. Автоматическая запись текущей даты и времени происходит при выборе именно второй ячейки новой строки, чтобы можно было сразу начать заполнять эту ячейку, не совершая перед этим лишнего действия по ее выбору.
Урок 15 по VBA — функции работы с датой и временем
И так, в этой по своей природе унылой публикации я кратко рассмотрю vba функции даты и времени, которые позволяют получить или установить параметры даты и времени, задать таймер выполнения заданного блока кода или сценария в целом. Также в конце статьи будет затронута функция vba языка format. Которая отвечает за форматирование данных.
Функции VBA даты и времени
Date () – позволяет получить значение текущей даты, установленной в системе.
Time () – вернет установленное в системе время
Now () – комбинированная функция, так как она позволяет получить значение системной даты и времени.
DateAdd (интервал, число, дата) – позволяет прибавить к заданной дате (параметр “дата”) указанное количество лет, кварталов, месяцев или секунд. На выходе мы получим следующее значение: дата + (число * интервал).
DateDiff (интервал, дата, дата2) – позволяет получить разницу между заданными датами, например. В годах, месяцах и так далее, разница определяется параметром “интервал”.
DatePart (интервал, дата) – позволяет получить заданную часть даты, например, только значение года, месяца или дня недели. Результат возврата регулируется параметром “интервал”.
DateSerial (год, месяц, день) – данная функция vba принимает три числовые значения, по которым возвращается дата.
DateValue (строка) – аналог предыдущей функции, но тут в качестве параметра мы передаем не числа. А строковое значение, на основе которого будет возвращаться дата, vba работа с датами.
Day (дата) – позволяет получить значение текущего дня (если отсутствует параметр “дата”) или для заданной даты.
Year (дата) – позволяет получить значение текущего года (если отсутствует параметр “дата”) или для заданной даты.
Month (дата) – позволяет получить значение текущего месяца (если отсутствует параметр “дата”) или для заданной даты.
Weekday (дата) – позволяет получить значение текущей недели (если отсутствует параметр “дата”) или для заданной даты.
Hour (время) – позволяет получить текущее значение часов (если отсутствует параметр “время”) или для заданного времени, vba дата и время.
Minute (время) – позволяет получить текущее значение минут (если отсутствует параметр “время”) или для заданного времени.
Second (время) – позволяет получить текущее значение секунд (если отсутствует параметр “время”) или для заданного времени.
Timer () – удобная функция для определения промежутка времени, ушедшего на выполнение заданного блока кода. Сама функция возвращает целое количество секунд, которые прошли начиная с полуночи.
TimeSerial (часы, минуты, секунды) – позволяет получить время, заданное тремя параметрами
TimeValue (строка) – работает аналогично предыдущей функции, но для получения времени, передается не целое значение, а строковое.
MonthName (числовое значение) – VBA функция позволяет получить название месяца, в качестве параметра указываем номер месяца.
WeekDay (дата) — задает возвращает имя месяца словами по его номеру. Возвращаемое значение зависит от региональных настроек. Если они русские, то вернется русское название месяца.
Помимо указанных выше vba функций даты и времени, можно использовать и такие вариации:
Date (дата) – позволяет задать системную дату
Time (время) – позволяет задать системное время.
В приведенных выше функциях даты и времени vba языка используется параметр “интервал”, который может принимать следующие значения:
VBA функции форматирование данных
Для форматирования данных в языке VBA используется функция Format , которая позволяет сформировать данные любого встроенного типа, используя заданный образец. Общий синтаксис функции format:
Format (Выражение, [“формат”, [первый день недели, [первая неделя года]]]) – тут параметр “выражение” является любым допустимым значением. Формат – необязательный параметр, который задает формат данных, должен заключаться в кавычки. Остальные два параметра также являются необязательными, и задают день недели, который нужно считать первым, и первую неделю года.
Параметр формат может принимать следующие значения:
- General Number – числовое значение без выделения разрядов тысяч, например, 12150,2003
- Currency – денежный формат, выделяются тысячные разряды и два знака после запятой, например, 255,33р.
- Fixed – числовое значение без выделения разрядов тысяч и двумя знаками после запятой, например, 22439,12.
- Standart – числовое значение, которое умножается на 100, при этом, остаются два знака после запятой и символ процента, например, 55,63%.
- Scientific – числовой формат для научных вычисление, например, 5,23Е+03
- Yes/No – данный параметр определяет, что функция вернет “Да” если форматированное выражение содержит строку Нет, или ненулевое значение и “Нет” в противном случае.
- True/False – аналог предыдущего параметра, но для строк “Истина” и “Ложь”.
- On/Off – для строк вида “Вкл” и “Выкл”.
- General Date – форматирование выражения в соответствии с установленными в системе стандартами даты и времени, например, 10.11.02 12:25:50
- Long Date – вывод полного формата даты, в зависимости от установок в системе, например, 10 октября 2013 г, vba функции даты.
- Medium Date – средний формат дат, например, 10-Окт-13.
- Short Date – короткий вывод формата даты, например, 10.10.13.
- Long Time – вывод в формате времени (часы, минуты, секунды), например, 12:20:40.
- Medium Time – 12 часовой формат времени (часы, минуты), например, 05:30.
- Short Time — 24 часовой формат времени (часы, минуты), например, 17:30.
Спасибо за внимание. Автор блога Владимир Баталий
Excel vba текущая дата
На этом шаге мы перечислим функции, используемые при работе с датой и временем.
В VBA имеются следующие функции времени и даты.
Date — возвращает значение типа Variant (Date), содержащее текущую системную дату.
Time — возвращает значение типа Variant (Date), содержащее текущее время по системным часам компьютера.
Now — возвращает значение типа Variant (Date), содержащее текущую дату и время по системному календарю и часам компьютера.
Hour, Minute, Second — возвращают значения типа Variant (Integer), содержащее целое число, которое представляет часы, минуты и секунды в значении времени. Синтаксис:
- время — значение времени или выражение, его определяющее.
В следующем примере переменной Час присваивается 16, Минута — 35 и Секунда — 17:
- дата — значение даты или выражение, его определяющее.
В следующем примере переменной День присваивается 17, Месяц — May, Год — 1960:
- date — выражение, представляющее дату;
- firstdayofweek — указывает первый день недели. Если этот аргумент опущен, подразумевается vbSunday (воскресенье). Допустимы также значения: vbMonday (понедельник), vbTuesday (вторник), vbWednesday (среда), vbThursday (четверг), vbFriday (пятница) и vbSaturday (суббота).
В следующем примере переменной ДеньНедели присваивается 3, т. е. вторник:
DateDiff — возвращает значение типа Variant (Long), указывающее число временных интервалов между двумя датами. Синтаксис:
В следующем примере переменной ПрожилМесяцевСРождения присваивается 642:
В следующем примере переменной День присваивается 03/17/63:
В данном примере переменной Время присваивается 16:35:17:
В следующем примере переменной Дата присваивается 05/17/60:
На следующем шаге мы рассмотрим функции выбора.
Как вставить текущую дату в Excel? Макрос для вставки текущей даты в активную ячейку
Многие ведут реестры учета всевозможных документов в таблицах Excel, проставляя в них даты различных этапов согласования и подписания. При этом не все знают, что ввести текущую дату в ячейку Excel можно нажатием сочетания горячих клавиш. Кроме того, для этой же цели можно использовать макрос VBA.
Для быстрого ввода текущей даты в ячейку предусмотрено стандартное средство Excel — нажатие сочетания горячих клавиш Ctrl+; (либо Ctrl+Ж, кому как удобнее запомнить). В случае, если кому-то такое сочетание клавиш не вполне удобно, то можно сохранить в личной книге макросов процедуру (код которой приведен ниже) и закрепить ее за более удобным сочетанием клавиш, например Ctrl+d (о том как это сделать можно прочитать подробнее), а для того чтобы это сочетание срабатывало независимо от раскладки клавиатуры, можно сохранить не одну, а две идентичных процедуры и привязать их к разным сочетаниям клавиш, например одну к Ctrl+d, а другую к Ctrl+в.
Для того чтобы текущая дата вставлялась не только в активную ячейку, но и во все выделенные ячейки, достаточно добавить цикл в программный код.
Для того, чтобы перенести этот программный код на свой компьютер, наведите курсор мыши на поле с программным кодом, нажмите на одну из двух кнопкок в правом верхнем углу этого поля, скопируйте программный код и вставьте его в модуль проекта на своем компьютере (подробнее о том, как сохранить программный код макроса ).