Оглавление
В приложении 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.
Продолжайте изучать новые методы и расти!