Функция даты в VBA (12 способов использования макросов с примерами)

  • Поделись Этим
Hugh West

В приложении Microsoft Visual Basic функции даты или любые концепции, связанные с датой, необходимы для выполнения различных операций с набором данных. Вы можете оказаться в различных ситуациях, когда вам придется использовать эти функции. В этом уроке вы узнаете о функции Date в VBA на подходящих примерах и соответствующих иллюстрациях. Кроме того, мы предоставим вам несколько функций даты.которые вы можете реализовать в своем рабочем листе.

Скачать Рабочую тетрадь для практических занятий

Использование VBA Date.xlsm

Введение в функцию даты VBA

Excel классифицирует даты в Дата/время Это встроенная функция. Мы можем использовать ее в макросах VBA для выполнения любых операций, связанных с датой.

Прежде чем приступить к работе с функцией Date, необходимо знать о том, что такое Переменные даты в VBA .

⏺ Синтаксис

Дата()

⏺ Аргументы Объяснения

Нет никаких аргументов.

⏺ Возвращение

Возвращает текущую дату.

⏺ Доступно в

Excel для Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 для Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000

⏺ Пример

Как вы знаете, аргументов нет, вы можете просто ввести его следующим образом:

 Sub vba_date() Dim current_date As Date current_date = Date MsgBox current_date End Sub 

Когда мы работаем с функцией Date, мы не указываем скобки в кодах VBA, как в этом примере.

Выход :

12 функций даты в VBA, которые вы должны изучить

Теперь, в следующих разделах, мы покажем вам некоторые дополнительные функции даты, которые вы можете использовать для многочисленных целей в VBA. Прочитайте эти разделы, чтобы знать все возможные способы работы с датой в VBA. Мы советуем вам держать их в своем арсенале. Это, несомненно, улучшит ваши знания.

1. Функция DateAdd как дата в VBA

В VBA мы используем функцию DateAdd для добавления дней в определенную дату. После этого она вернет полученную дату.

Синтаксис:

DateAdd(интервал, число, дата)

Аргументы:

интервал: Требуется. Строковое выражение - это интервал времени, который вы хотите добавить.

число: Требуется. Это числовое выражение, которое представляет собой количество интервалов, которые вы хотите добавить. Оно может быть положительным (чтобы получить даты в будущем) или отрицательным (чтобы получить даты в прошлом).

дата: Оригинальная дата/время.

Теперь интервал аргументы могут иметь следующие настройки:

yyyy - год

q - Квартал

m - Месяц

y - День года

d - День

w - Будний день

ww - Неделя

h - Час

n - Минута

s - Второй

Сниппет кода :

 Sub dateadd_function() Dim result_Date As Date result_Date = DateAdd("d", 15, "1/31/2022") MsgBox result_Date End Sub 

Выход:

Как вы можете видеть, он добавил 15 дат в текущую дату в VBA.

Читать далее: Как использовать функцию IsDate в VBA (3 примера)

2. Функция DateDiff в VBA

Функция DateDiff возвращает Variant (Long), определяющий количество временных промежутков между двумя указанными датами.

Синтаксис :

DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )

Аргументы:

интервал: Требуется. Строковое выражение - это промежуток времени, который вы хотите добавитьСтроковое выражение - это промежуток времени, который вы используете для вычисления разницы между двумя датами.

дата1,дата2 : Требуется; Вариант (Дата). Две даты, которые вы хотите использовать в расчете.

первый день недели: Необязательно. Константа, определяющая первый день недели. Если не определен, то предполагается воскресенье.

первая неделя года: Необязательно. Константа, устанавливающая первую неделю года. Если она не установлена, то первой неделей считается неделя, в которой появляется 1 января.

Теперь интервал аргументы могут иметь следующие настройки:

yyyy - год

q - Квартал

m - Месяц

y - День года

d - День

w - Будний день

ww - Неделя

h - Час

n - Минута

s - Второй

Сайт первый день недели аргумент имеет такие настройки:

vbSunday - использует воскресенье как главный день недели.

vbMonday - использует понедельник в качестве первого дня недели.

vbTuesday - управляет вторником как первым днем недели.

vbWednesday - использует среду в качестве первого дня недели.

vbThursday - использует четверг в качестве скорее дня недели.

vbFriday - использует пятницу в качестве первого дня недели.

vbSaturday - управляет субботой как первым днем недели.

vbUseSystemDayOfTheWeek - используется первый день недели, который определяется настройками вашего устройства.

Сайт первая неделя года имеет такие настройки:

vbFirstJan1 - использует неделю, начиная с 1 января.

vbFirstFourDays - использует первую неделю, в которой есть хотя бы четыре дня в новом году.

vbFirstFullWeek - работает в первую полную неделю года.

vbSystem - использует первую неделю года, определенную местоположением вашего устройства.

Сниппет кода:

 Sub DateDiff_Function() Dim result As Long result = DateDiff("d", "1/31/2022", "2/12/2022") MsgBox result End Sub 

Выход :

В конечном итоге он возвращает разницу между двумя датами в VBA.

Читать далее: Как использовать функцию VBA DateDiff в Excel (9 примеров)

3. Функция DatePart как дата

Функция DatePart возвращает переменную (Integer), содержащую определенную часть заданной даты.

Синтаксис :

DatePart(interval, date, [ firstdayofweek, [ firstweekofyear ]])

Аргументы:

интервал: Требуется. Строковое выражение - это промежуток времени, который вы хотите добавитьСтроковое выражение - это промежуток времени, который вы используете для вычисления разницы между двумя датами.

дата: Требуется; Вариант (Дата). Дата, которую вы хотите использовать в расчете.

первый день недели: Необязательно. Константа, определяющая первый день недели. Если не определен, то предполагается воскресенье.

первая неделя года: Необязательно. Константа, устанавливающая первую неделю года. Если она не установлена, то первой неделей считается неделя, в которой появляется 1 января.

Теперь интервал аргументы могут иметь следующие настройки:

yyyy - год

q - Квартал

m - Месяц

y - День года

d - День

w - Будний день

ww - Неделя

h - Час

n - Минута

s - Второй

Сайт первый день недели аргумент имеет такие настройки:

vbSunday - использует воскресенье как главный день недели.

vbMonday - использует понедельник в качестве первого дня недели.

vbTuesday - управляет вторником как первым днем недели.

vbWednesday - использует среду в качестве первого дня недели.

vbThursday - использует четверг в качестве скорее дня недели.

vbFriday - использует пятницу в качестве первого дня недели.

vbSaturday - управляет субботой как первым днем недели.

vbUseSystemDayOfTheWeek - используется первый день недели, который определяется настройками вашего устройства.

Сайт первая неделя года имеет такие значения:

vbFirstJan1 - действует в течение недели, включая 1 января.

vbFirstFourDays - использует первую неделю, которая в новом году обладает максимум заниженными четырьмя днями.

vbFirstFullWeek - использует первую полную неделю года.

vbSystem - использует первую неделю года, выбранную в соответствии с местоположением вашего устройства.

Сниппет кода :

 Sub DatePart_Function() Dim result As Integer result = DatePart("m", "10/11/2022") MsgBox result End Sub 

Выход :

Таким образом, вы можете использовать эту функцию даты в кодах VBA.

Читать далее: Как использовать функцию VBA FileDateTime в Excel (3 варианта использования)

4. Функция DateSerial

Вы можете увидеть дату на основе введенных года, месяца и дня с помощью функции The DateSerial функция.

Синтаксис:

DateSerial(год, месяц, день)

Аргументы:

год - Обязательное поле. Число от 100 до 9999 включительно или числовое выражение, символизирующее год.

месяц - Обязательное поле. Целочисленное значение, определяющее месяц.

день - Обязательное поле. Целочисленное значение, описывающее день.

Сниппет кода:

 Sub date_serial() Dim date_special As Date date_special = DateSerial(2022, 1, 11) MsgBox date_special End Sub 

Выход :

Читать далее: Как использовать VBA TimeSerial в Excel (3 примера)

4. Функция VBA DateValue

Теперь мы используем функцию DateValue для определения даты.

Синтаксис :

DateValue(date)

Аргумент:

Здесь дата Аргумент обычно представляет собой строковое выражение, описывающее дату с 1 января 100 г. по 31 декабря 9999 г. Независимо от этого, дата может быть любым выражением, которое может символизировать дату, время или и дату, и время в этом диапазоне.

Сниппет кода:

 Sub Date_value() Dim result As Date result = DateValue("January, 10, 2022") MsgBox result End Sub 

Выход :

Как видите, мы успешно использовали функцию даты в кодах VBA.

5. Дневная функция в VBA

Он возвращает Variant (Integer), определяющий вещественное число от 1 до 31 включительно, передающее день месяца.

Синтаксис :

День (дата)

Аргумент:

Требуемый аргумент date - это любой Variant, числовое выражение, строковое выражение или любая комбинация. Он представляет собой дату. Если дата включает Null, то возвращается также Null.

Сниппет кода:

 Sub day_function() Dim date1, the_day date1 = #12/12/2023# the_day = Day(date1) MsgBox the_day End Sub 

Выход:

Как видите, с помощью кодов VBA мы выяснили, что день заданной даты равен 12.

Похожие материалы: Функция форматирования VBA в Excel (8 вариантов использования с примерами)

6. VBA Функция месяца как даты

Он возвращает вариант (Integer), определяющий вещественное число от 1 до 12 включительно, передающее месяц года.

Синтаксис :

Месяц (дата)

Аргумент:

Требуемый аргумент date - это любой Variant, числовое выражение, строковое выражение или любая комбинация. Он представляет собой дату. Если дата включает Null, то возвращается также Null.

Сниппет кода:

 Sub month_function() Dim date1, the_month date1 = #12/12/2023# the_month = Month(date1) MsgBox the_month End Sub 

Выход:

Похожие материалы: Как использовать правую функцию VBA в Excel (6 примеров)

Похожие чтения

  • Как использовать функцию VBA Environ (4 примера)
  • Как использовать VBA и функции в Excel (4 примера)
  • Выражение VBA Если - Тогда - Иначе в Excel (4 примера)
  • Как использовать функцию VBA Abs в Excel (9 примеров)
  • Как использовать конкатенат в Excel VBA (4 метода)

7. функция "Имя месяца

Возвращает строку, демонстрирующую указанный месяц.

Синтаксис :

MonthName(month, [ abbreviate ])

Аргумент:

месяц: Требуется. Числовое название месяца. Например, январь - 1, февраль - 2 и так далее.

сокращать: Необязательно. Булево значение, которое показывает, должно ли название месяца быть сокращено. Если оно пропущено, то по умолчанию будет False, что означает, что название месяца не сокращается.

Сниппет кода:

 Sub MonthName_Function() Dim month_name As String month_name = MonthName(9, True) MsgBox month_name End Sub 

Выход:

Как вы можете видеть, мы нашли название месяца с помощью этой функции VBA Date Function.

8. Функция буднего дня

Он возвращает Вариант ( Целое число ), обладающий действительным числом, выражающим день недели.

Синтаксис :

Weekday(date, [ firstdayofweek ])

Аргумент:

дата: Требуемый аргумент date - это любой Variant, числовое выражение, строковое выражение или любая комбинация. Он представляет собой дату. Если дата включает Null, то возвращается также Null.

первый день недели: Необязательно. Константа, определяющая первый день недели. Если не определен, то предполагается воскресенье.

Сайт первый день недели аргумент имеет такие настройки:

vbSunday - использует воскресенье как главный день недели.

vbMonday - использует понедельник в качестве первого дня недели.

vbTuesday - управляет вторником как первым днем недели.

vbWednesday - использует среду в качестве первого дня недели.

vbThursday - использует четверг в качестве скорее дня недели.

vbFriday - использует пятницу в качестве первого дня недели.

vbSaturday - управляет субботой как первым днем недели.

vbUseSystemDayOfTheWeek - используется первый день недели, который определяется настройками вашего устройства.

Параметры возврата

Теперь эта функция возвращает целое число. Итак, значение этих целых чисел следующее:

1 - воскресенье

2 - понедельник

3 - вторник

4 - среда

5 - четверг

6 - пятница

7 - суббота

Сниппет кода:

 Sub Weekday_Function() Dim week_day As Integer week_day = Weekday("4/27/2022") MsgBox week_day End Sub 

Выход:

Как вы видите, функция даты VBA возвращает 4. Это означает среду.

Похожие материалы: Как использовать функцию Fix в Excel VBA (4 примера)

9. Функция VBA WeekdayName

Возвращает строку, отображающую ограниченный день недели.

Синтаксис :

WeekdayName(weekday, abbreviate, firstdayofweek)

Аргумент:

будний день: Обязательное поле. Числовая идентификация для дня недели. Числовое значение каждого дня зависит от настройки параметра firstdayofweek.

сокращать: Это необязательно. Булево значение, которое подразумевает, должно ли имя дня недели быть сокращено. Если оно пропущено, то по умолчанию будет False, что означает, что имя дня недели не сокращается и не укорачивается.

первый день недели: Необязательное поле. Числовое значение, указывающее на первый день недели. Оно может иметь различные значения.

Сайт первый день недели аргумент может иметь следующие значения:

vbSunday - использует воскресенье как главный день недели.

vbMonday - использует понедельник в качестве первого дня недели.

vbTuesday - управляет вторником как первым днем недели.

vbWednesday - использует среду в качестве первого дня недели.

vbThursday - использует четверг в качестве скорее дня недели.

vbFriday - использует пятницу в качестве первого дня недели.

vbSaturday - управляет субботой как первым днем недели.

vbUseSystemDayOfTheWeek - используется первый день недели, который определяется настройками вашего устройства.

Сниппет кода:

 Sub WeekdayName_Function() Dim weekday_name As String weekday_name = WeekdayName(6) MsgBox weekday_name End Sub 

Выход:

Как вы можете видеть, приведенные выше коды VBA отображают название дня недели.

Похожий материал: Как использовать функцию VBA WeekdayName в Excel (2 примера)

10. Функция Year в VBA Date

Он возвращает переменную (Integer), содержащую действительное число, выражающее год.

Синтаксис :

Год (дата)

Аргумент:

Требуемый аргумент date - это любой Variant, числовое выражение, строковое выражение или любая комбинация. Он представляет собой дату. Если дата включает Null, то возвращается также Null.

Сниппет кода:

 Sub year_function() Dim date1, the_year date1 = #12/12/2023# the_year = Year(date1) MsgBox the_year End Sub 

Выход:

Здесь вы можете увидеть год заданной даты после применения кода VBA.

Читать далее: Как использовать функцию замены VBA в Excel (11 приложений)

11. Функция FormatDateTime

Эта функция возвращает выражение, отформатированное как дата или время.

Синтаксис :

FormatDateTime(Date, [ NamedFormat ])

Аргумент:

Дата: Обязательное поле. Форматируемое выражение даты.

NamedFormat: Необязательно. Это числовое значение, которое отображает формат даты/времени. Если оно опущено, то используется формат vbGeneralDate .

Сайт NamedFormat может иметь следующие значения:

vbGeneralDate(0): Показать дату и/или время. Если есть часть даты, отобразить ее в виде короткой даты. Если есть часть времени, отобразить ее в виде длинного времени. Обе части отображаются, если они присутствуют.

vbLongDate(1): Изобразите дату, используя конфигурацию длинной даты, выбранную в региональных настройках вашего компьютера.

vbShortDate(2): Отображение даты с использованием формата короткой даты, указанного в региональных настройках компьютера.

vbLongTime(3): Показать время, используя формат времени, указанный в региональных настройках вашего компьютера.

vbShortTime(4): Отображение времени с использованием 24-часового формата (чч:мм).

Сниппет кода:

 Sub FormatDateTime_Function() d = ("2022-02-03 18:25") MsgBox ("Формат 1 : " & FormatDateTime(d)) MsgBox ("Формат 2 : " & FormatDateTime(d, 1)) MsgBox ("Формат 3 : " & FormatDateTime(d, 2)) MsgBox ("Формат 4 : " & FormatDateTime(d, 3)) MsgBox ("Формат 5 : " & FormatDateTime(d, 4)) End Sub 

Выход:

После выполнения кода вы увидите следующие диалоговые окна:

Здесь вы можете увидеть все форматы времени и даты в VBA.

Читать далее: Как использовать функцию VBA TimeValue (6 наглядных примеров)

12. Функция VBA CDate

Функция преобразует действительное выражение даты и времени в типичную дату.

Синтаксис :

CDate(дата)

Аргумент:

Требуемый аргумент date - это любой Variant, числовое выражение, строковое выражение или любая комбинация. Он представляет собой дату. Если дата включает Null, то возвращается также Null.

Сниппет кода:

 Sub Cdate_Function() Dim date1 As Variant Dim date2 As Variant date1 = CDate("Mar 11 2022") date2 = CDate("29 Sep 2023") MsgBox ("Первая дата : " & date1 & vbCrLf & "Вторая дата : " & date2) End Sub 

Выход:

Как вы можете видеть, наш код VBA просто вернул типичный формат даты Excel.

Похожие материалы: Как использовать функцию VBA DIR в Excel (7 примеров)

Примеры VBA Date

В следующих разделах мы предоставим вам три практических и подходящих примера даты с использованием VBA. Эти примеры будут содержать связанные с датой проблемы и их решения. Мы рекомендуем вам прочитать и применить на практике все эти примеры, чтобы улучшить свои знания VBA. Давайте приступим.

1. Вычисление просроченных дней с использованием даты в VBA

Значение слова просроченный - происходящий с опозданием или просроченный. просроченный, в частности, просроченный или слишком поздно для выполнения какого-либо требования.

Предположим, вы должны сдать задание в воскресенье. Но уже вторник, а вы его не сдали. Это можно назвать двумя просроченными днями.

Взгляните на следующий набор данных:

Здесь у нас есть набор данных о некоторых студентах и дате сдачи ими заданий. Вы можете видеть последнюю дату сдачи. Наша цель - найти просроченную дату на основе даты сдачи. Для этого выполните следующие шаги:

📌 Шаги

  • Сначала нажмите Alt+F11 на клавиатуре, чтобы открыть редактор VBA.
  • Затем выберите Вставка> Модуль .

  • После этого введите следующий код:
 Sub overdue_days() Dim cell As Integer Dim J As Integer Dim due_date As Date due_date = #1/11/2022# For cell = 5 To 11 If Cells(cell, 4).Value = due_date Then Cells(cell, 5).Value = "Submitted Today" ElseIf Cells(cell, 4).Value> due_date Then J = due_date - Cells(cell, 4).Value J = Abs(J) Cells(cell, 5).Value = J & " Просроченные дни" Else Cells(cell, 5).Value = "No Overdue" End If Next cellEnd Sub 

Мы использовали функция ABS чтобы убрать знак минус.

  • Затем сохраните файл.
  • После этого нажмите Alt+F8 на клавиатуре, чтобы открыть диалоговое окно Макрос.
  • Далее выберите
  • Затем нажмите на Запускайте .

Как видите, мы успешно использовали дату в VBA и нашли просроченные дни.

Похожие чтения

  • Как использовать функцию пробела VBA в Excel (3 примера)
  • Использование функции VBA ChDir в Excel (4 подходящих примера)
  • Как использовать функцию IsNull в Excel VBA (5 примеров)
  • Использование VBA While Wend Statement в Excel (4 примера)
  • Как вызвать подвызов в VBA в Excel (4 примера)

2. Поиск года рождения по дате с помощью VBA

Теперь вы можете найти Год, начиная с определенной даты. Это довольно просто найти.

Взгляните на следующий набор данных:

Здесь вы можете увидеть дату рождения некоторых людей. Наша цель - извлечь год рождения из даты, а также год рождения последней записи Элизабет.

📌 Шаги

  • Сначала нажмите Alt+F11 на клавиатуре, чтобы открыть редактор VBA.
  • Затем выберите Вставка>Модуль .

  • После этого введите следующий код:
 Sub find_year() Dim last_entry As Date Dim cell As Integer For cell = 5 To 11 Cells(cell, 4).Value = Year(Cells(cell, 3).Value) If cell = 11 Then last_entry = Cells(cell, 3).Value End If Next cell MsgBox "Год рождения последней записи: " & Year(last_entry) End Sub 
  • Затем сохраните файл.
  • После этого нажмите Alt+F8 на клавиатуре, чтобы открыть диалоговое окно Макрос.
  • Далее выберите найти_год .
  • Затем нажмите на Запускайте .

Наконец, вы можете видеть, что мы успешно извлекаем год рождения из каждой даты. Кроме того, мы нашли год рождения последней записи, используя VBA в Excel.

3. Добавление дней в дату с помощью VBA

Теперь можно определить переменную даты и использовать ее для добавления даты. Для этого мы используем датаДобавить Вы можете использовать эту функцию для добавления дней, месяцев и лет к определенной дате.

Взгляните на следующий набор данных:

Здесь вы видите несколько имен и несколько дат, привязанных к ним. Теперь наша цель - добавить еще пять дней к этим датам и создать новую дату.

📌 Шаги

  • Сначала нажмите Alt+F11 на клавиатуре, чтобы открыть редактор VBA.
  • Затем выберите Вставка>Модуль .

  • После этого введите следующий код:
 Sub add_days() Dim first_date As Date Dim second_date As Date Dim cell As Integer For cell = 5 To 11 first_date = Cells(cell, 3).Value second_date = DateAdd("d", 5, first_date) Cells(cell, 4).Value = second_date Next cell End Sub 

Здесь мы использовали "d" в качестве аргумента в функции DateAdd. Вы можете изменить его на "y" или "m", чтобы добавить годы или месяцы соответственно,

  • Затем сохраните файл.
  • После этого нажмите Alt+F8 на клавиатуре, чтобы открыть диалоговое окно Макрос.
  • Затем выберите.
  • Затем нажмите на Запускайте .

Как видите, мы успешно добавили дни в дату, используя дату в VBA. Теперь вы можете изменить код по своему усмотрению.

💬 О чем нужно помнить

Функция VBA Date фактически работает следующим образом функция TODAY в Excel.

VBA DATE - это энергонезависимая функция в excel. Это означает, что она сохранит данные даже при перерыве в подаче питания.

В основном, VBA сохраняет значения Date как DATE на момент внедрения.

Таким образом, если вы попытаетесь присвоить переменной date строку/текст, это приведет к ошибке.

Значение по умолчанию для параметра Дата - 0:00:00 (полночь) 1 января 0001 года.

Заключение

В заключение я надеюсь, что этот учебник дал вам часть полезных знаний о кодах Date в VBA. Мы рекомендуем вам изучить и применить все эти инструкции к вашему набору данных. Скачайте рабочую тетрадь и попробуйте сами. Кроме того, не стесняйтесь оставлять отзывы в разделе комментариев. Ваши ценные отзывы поддерживают нашу мотивацию создавать подобные учебники.

Не забудьте заглянуть на наш сайт Exceldemy.com для решения различных проблем и задач, связанных с Excel.

Продолжайте изучать новые методы и расти!

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.