Найти в Дзене
VBA Excel с нуля

VBA Excel № 72.2 Работа с датами. Расширенные функции в VBA.

Продолжение (начало в статье 72.1) 📌 Скачать файл пример, можно в следующей статье. В прошлой статье были показаны функции АДАТА и УдалитьДату. Давайте приступим к разбору следующей: АДАТАДНЕЙПЛЮС Эта функция предназначена для добавления определенного количества дней (days) к переданной дате (адата1) и возврата результата в указанном формате (формат). Давайте рассмотрим строки кода после скриншота: АДАТАДНЕЙМЕЖДУ Следующая функция: АДАТАДНЕЙМЕЖДУ предназначена для вычисления количества дней между двумя переданными датами (адата1 и адата2). Давайте рассмотрим код подробнее: АДАТАЛЕТМЕЖДУ Функция АДАТАЛЕТМЕЖДУ используется для определения полного количества лет между двумя переданными датами (адата1 и адата2) учитывая удаление дня недели с помощью функции УдалитьДату. Что говорит нам этот код: Мы рассмотрели три функции. Теперь у нас в модуле пять функций (две в статье №72.1). В следующей статье будем разбирать оставшиеся четыре функции и добавлять их в этот же модуль.
Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Продолжение (начало в статье 72.1)

📌 Скачать файл пример, можно в следующей статье.

В прошлой статье были показаны функции АДАТА и УдалитьДату. Давайте приступим к разбору следующей:

АДАТАДНЕЙПЛЮС

Эта функция предназначена для добавления определенного количества дней (days) к переданной дате (адата1) и возврата результата в указанном формате (формат). Давайте рассмотрим строки кода после скриншота:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
  1. Dim ВременныйDate As Date:Объявляет переменную ВременныйDate как тип данных Date. Эта переменная будет использоваться для временного хранения даты после преобразования из строки.
  2. If IsMissing(формат) Then формат = "Короткая дата": Проверяет, был ли передан параметр формат при вызове функции. Если параметр отсутствует (т.е., не был указан при вызове функции), устанавливает значение по умолчанию как "Короткая дата".
  3. адата1 = УдалитьДату(адата1):Применяет функцию УдалитьДату к переданной дате адата1 для удаления дня недели из строки перед преобразованием в дату.
  4. ВременныйDate = DateValue(адата1):Преобразует строку адата1 в значение типа Date с использованием DateValue и сохраняет результат в переменной ВременныйDate.
  5. АДАТАДНЕЙПЛЮС = Format(ВременныйDate + days, формат): Добавляет указанное количество дней (days) к преобразованной дате (ВременныйDate), затем форматирует полученную дату с использованием указанного формата (формат). Результат возвращается в виде строки.
Скриншот с моего ноутбука
Скриншот с моего ноутбука

АДАТАДНЕЙМЕЖДУ

Следующая функция: АДАТАДНЕЙМЕЖДУ предназначена для вычисления количества дней между двумя переданными датами (адата1 и адата2).

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Давайте рассмотрим код подробнее:

  1. адата1 = УдалитьДату(адата1) и адата2 = УдалитьДату(адата2): Применяет функцию УдалитьДату к обеим переданным датам для удаления дня недели из строк перед их использованием.
  2. АДАТАДНЕЙМЕЖДУ = DateSerial(Year(адата1), Month(адата1), Day(адата1)) - DateSerial(Year(адата2), Month(адата2), Day(адата2)): Вычисляет разницу между датами, используя функцию DateSerial для создания дат на основе года, месяца и дня каждой из дат. Затем результат вычисления, представляющий разницу в днях, присваивается возвращаемой переменной АДАТАДНЕЙМЕЖДУ.
Скриншот с моего ноутбука
Скриншот с моего ноутбука

АДАТАЛЕТМЕЖДУ

Функция АДАТАЛЕТМЕЖДУ используется для определения полного количества лет между двумя переданными датами (адата1 и адата2) учитывая удаление дня недели с помощью функции УдалитьДату.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Что говорит нам этот код:

  1. Dim YearDiff As Long: Объявляет переменную YearDiff для хранения разницы в годах между двумя датами.
  2. адата1 = УдалитьДату(адата1) и адата2 = УдалитьДату(адата2): Применяет функцию УдалитьДату к обеим переданным датам для удаления дня недели из строк перед их использованием.
  3. YearDiff = Year(адата2) - Year(адата1): Вычисляет разницу в годах между годами дат адата2 и адата1.
  4. If DateSerial(Year(адата1), Month(адата2), Day(адата2)) < CDate(адата1) Then YearDiff = YearDiff - 1:
  5. Проверяет, если месяц и день второй даты (адата2) меньше, чем в первой дате (адата1), то уменьшает YearDiff на 1. Это делается для корректного учета полных лет между датами.
  6. АДАТАЛЕТМЕЖДУ = YearDiff: Присваивает результат (количество полных лет) возвращаемой переменной АДАТАЛЕТМЕЖДУ.
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Мы рассмотрели три функции. Теперь у нас в модуле пять функций (две в статье №72.1). В следующей статье будем разбирать оставшиеся четыре функции и добавлять их в этот же модуль.