Функції VBA для роботи з датою і часом

Функції VBA для роботи з датою і часом

У цьому уроці ми розглянемо основні функції VBA для роботи з датою і часом. Знаючи ці функції Ви легко зможете виводити поточну дату і час, а також додавати або віднімати від поточної дати потрібну кількість років, або місяців. Тобто виконувати з датою, або часом елементарні математичні операції: додавання і віднімання. 

Працюючи з датою і часом, найбільш поширеними є функції Date(), Time() та Now(). Саме вони виводять поточну системну дату, поточний системний час, або поточну дату і час разом.

Date() — повертає поточну системну дату. Встановити її можна за допомогою однойменного оператора, наприклад, так:

Date = #5/12/2006#

Time() — повертає поточний системний час

Now() — повертає дату і час разом.

DateAdd() — можливість додати до дати зазначену кількість років, кварталів, місяців і так далі — аж до секунд. Інтервали (рік, місяць і т.д.) вказуються в текстовому форматі. Список допустимих значень:

"yyyy" Рік

"q" Квартал

"m" Місяць

"y" День року

"d" День

"w" День тижня

"ww" Тиждень

"h" Година

"n" Хвилина

"s" Секунда

Сам синтаксис звернення нехитрий. Спочатку вказуємо інтервал, потім скільки одиниць додати і самий останній аргумент — до якої дати (включаючи час, до речі). Наприклад, щоб додати 3 роки до поточної дати-часу, треба записати функцію так:

MsgBox DateAdd("yyyy", 3, Now)

Але що цікаво — можна не тільки додавати, але і віднімати. Функція не зміниться, ми просто повинні записати кількість періодів що додаються зі знаком мінус. Віднімемо три роки від поточної дати-часу:

MsgBox DateAdd("yyyy", -3, Now)

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)

DateSerial() — можливість створити значення дати, задаючи місяць, рік і день числовими значеннями:

MsgBox DateSerial(2012, 6, 7)

DateValue() — робить те ж саме, що і DateSerial(). Відмінності — в форматі прийнятих значень. Ця функція в якості аргументу приймає дату в текстовому форматі і перетворює її в формат дати:

MsgBox DateValue("07.06.12")

Аналогічним чином (для часу) працюють TimeSerial() та TimeValue()

Day(), Year(), Month(), Weekday(), Hour(), Minute(), Second() — спеціалізовані замінники функції DatePart(), які повертають потрібну частину дати/часу (яку саме — видно з назви).

MonthName() — повертає ім'я місяця словами по його номеру. Значення, що повертається залежить від регіональних налаштувань. Якщо вони російські, то повернеться російська назва місяця.

Timer() — повертає кількість секунд, що пройшли з півночі.

Наші рекомендації

Сollaborator

Hosting Ukraine

АВТОРИЗАЦІЯ