Съдържание
В приложението 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(интервал, date1, date2, [ firstdayofweek, [ firstweekofy year ]] )
Аргументи:
интервал: Изисква се. Стринг изразът е интервалът от време, който искате да добавитеСтринг изразът е интервалът от време, който използвате, за да изчислите разликата между две дати.
date1,date2 : Задължително; Вариант (Дата). Две дати, които искате да използвате в изчислението.
първи ден от седмицата: Незадължително. Константа, която определя първия ден от седмицата. Ако не е фиксирана, се приема, че е неделя.
първатаседмицаотгодина: Незадължително. Константа, която определя първата седмица от годината. Ако не е зададена, първата седмица се предполага, че е седмицата, в която се появява 1 януари.
Сега интервал аргументи могат да имат следните настройки:
yyyy - Година
q - Квартал
m - Месец
y - Ден от годината
d - Ден
w - Седмичен ден
ww - Седмица
h - Час
n - Минута
s - Втори
Сайтът първи ден от седмицата аргументът има тези настройки:
vbSunday - използва неделята като най-преден ден от седмицата.
vbMonday - използва понеделник като първи ден от седмицата.
vbTuesday - използва вторник като първи ден от седмицата.
vbWednesday - използва сряда като първи ден от седмицата.
vbЧетвъртък - четвъртък е по-скоро ден от седмицата.
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.
Прочетете още: Как да използвате функцията DateDiff във VBA в Excel (9 примера)
3. Функция DatePart като Date
Функцията DatePart връща Variant (Integer), съдържащ определената част от зададена дата.
Синтаксис :
DatePart(интервал, дата, [ firstdayofweek, [ firstweekofy year ]])
Аргументи:
интервал: Изисква се. Стринг изразът е интервалът от време, който искате да добавитеСтринг изразът е интервалът от време, който използвате, за да изчислите разликата между две дати.
дата: Задължително; Вариант (Дата). Датата, която искате да използвате в изчислението.
първи ден от седмицата: Незадължително. Константа, която определя първия ден от седмицата. Ако не е фиксирана, се приема, че е неделя.
първатаседмицаотгодина: Незадължително. Константа, която определя първата седмица от годината. Ако не е зададена, първата седмица се предполага, че е седмицата, в която се появява 1 януари.
Сега интервал аргументи могат да имат следните настройки:
yyyy - Година
q - Квартал
m - Месец
y - Ден от годината
d - Ден
w - Седмичен ден
ww - Седмица
h - Час
n - Минута
s - Втори
Сайтът първи ден от седмицата Аргументът има тези настройки:
vbSunday - използва неделята като най-преден ден от седмицата.
vbMonday - използва понеделник като първи ден от седмицата.
vbTuesday - използва вторник като първи ден от седмицата.
vbWednesday - използва сряда като първи ден от седмицата.
vbЧетвъртък - четвъртък е по-скоро ден от седмицата.
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.
Прочетете още: Как да използвате функцията FileDateTime във VBA в Excel (3 приложения)
4. Функция DateSerial
Можете да видите дата въз основа на въведени година, месец и ден с помощта на 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. Функция DateValue във VBA
Сега използваме функцията DateValue, за да дефинираме дата.
Синтаксис :
DateValue(дата)
Аргумент:
Тук дата Аргументът обикновено е низ от изрази, описващ дата от 1 януари 100 г. до 31 декември 9999 г. Независимо от това, датата може да бъде всякакъв друг израз, който може да символизира дата, време или и дата, и време в този диапазон.
Извадка от кода:
Sub Date_value() Dim result As Date result = DateValue("January, 10, 2022") MsgBox result End Sub
Изход :
Както виждате, успешно използвахме функцията за дата в кодове VBA.
5. Функция Day във VBA
Връща вариант (Integer), определящ реално число между 1 и 31 включително, изразяващо деня от месеца.
Синтаксис :
Ден (дата)
Аргумент:
Задължителният аргумент за дата е произволен вариант, цифров израз, символен низ или комбинация от тях. Той представлява дата. Ако датата включва 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 Format в Excel (8 приложения с примери)
6. Функция VBA Месец като дата
Връща Variant (Integer), определящ реално число между 1 и 12 включително, което предава месеца на годината.
Синтаксис :
Месец(дата)
Аргумент:
Задължителният аргумент за дата е произволен вариант, цифров израз, символен низ или комбинация от тях. Той представлява дата. Ако датата включва Null, ще бъде върнат също Null.
Извадка от кода:
Sub month_function() Dim date1, the_month date1 = #12/12/2023# the_month = Month(date1) MsgBox the_month End Sub
Изход:
Свързано съдържание: Как да използвате функцията VBA Right в Excel (6 примера)
Подобни четива
- Как да използвате функцията Environ във VBA (4 примера)
- Как да използваме VBA и функция в Excel (4 примера)
- VBA If - Then - Else Statement в 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.
8. Функция "Седмичен ден
Той връща Вариант ( Цели числа ), притежаващ реално число, изразяващо деня от седмицата.
Синтаксис :
Седмичен ден(дата, [първи ден от седмицата ])
Аргумент:
дата: Задължителният аргумент за дата е произволен вариант, цифров израз, символен низ или комбинация от тях. Той представлява дата. Ако датата включва Null, ще бъде върнат също Null.
първи ден от седмицата: Незадължително. Константа, която определя първия ден от седмицата. Ако не е фиксирана, се приема, че е неделя.
Сайтът първи ден от седмицата аргументът има тези настройки:
vbSunday - използва неделята като най-преден ден от седмицата.
vbMonday - използва понеделник като първи ден от седмицата.
vbTuesday - използва вторник като първи ден от седмицата.
vbWednesday - използва сряда като първи ден от седмицата.
vbЧетвъртък - четвъртък е по-скоро ден от седмицата.
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(ден от седмицата, съкращение, първи ден от седмицата)
Аргумент:
работен ден: Задължително поле. Цифровата идентификация за деня от седмицата. Цифровата стойност на всеки ден зависи от настройката на firstdayofweek (първи ден от седмицата).
съкращаване: Това не е задължително. Булева стойност, която показва дали името на работния ден трябва да бъде съкратено. Ако е пропусната, по подразбиране е False, което означава, че името на работния ден не се съкращава или съкращава.
първи ден от седмицата: Незадължително поле. Цифрова стойност, която указва първия ден от седмицата. Може да има различни стойности.
Сайтът първи ден от седмицата аргументът може да има следните стойности:
vbSunday - използва неделята като най-преден ден от седмицата.
vbMonday - използва понеделник като първи ден от седмицата.
vbTuesday - използва вторник като първи ден от седмицата.
vbWednesday - използва сряда като първи ден от седмицата.
vbЧетвъртък - четвъртък е по-скоро ден от седмицата.
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), съдържащ реално число, изразяващо годината.
Синтаксис :
Година(дата)
Аргумент:
Задължителният аргумент за дата е произволен вариант, цифров израз, символен низ или комбинация от тях. Той представлява дата. Ако датата включва 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(Дата, [ NamedFormat ])
Аргумент:
Дата: Задължително поле. Израз за дата, който трябва да се форматира.
NamedFormat: Това не е задължително. Това е числова стойност, която показва формата на датата и часа. Ако е пропусната, се използва vbGeneralDate .
Сайтът NamedFormat може да има следните стойности:
vbGeneralDate(0): Покажете дата и/или час. Ако има част за дата, изразете я като кратка дата. Ако има част за час, покажете я като дълго време. И двете части се излагат, ако има такива.
vbLongDate(1): Изобразете дата, като използвате конфигурацията за дълга дата, избрана в регионалните настройки на компютъра.
vbShortDate(2): Показвайте датата, като използвате краткия формат на датата, определен в регионалните настройки на компютъра.
vbLongTime(3): Показвайте времето, като използвате формата на времето, определен в регионалните настройки на компютъра.
vbShortTime(4): Показвайте час в 24-часов формат (hh:mm).
Извадка от кода:
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.
Прочетете още: Как да използвате функцията TimeValue във VBA (6 подходящи примера)
12. Функция CDate във VBA
Функцията преобразува валиден израз за дата и час в типична дата.
Синтаксис :
CDate(дата)
Аргумент:
Задължителният аргумент за дата е произволен вариант, цифров израз, символен низ или комбинация от тях. Той представлява дата. Ако датата включва Null, ще бъде върнат също Null.
Извадка от кода:
Sub Cdate_Function() Dim date1 As Variant Dim date2 As Variant date1 = CDate("Mar 11 2022") date2 = CDate("29 Sep 2023") MsgBox ("First date : " & date1 & vbCrLf & "Second date : " & 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 = "Подадена днес" 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 = "Няма просрочени" End If Next cellКрай на Sub
Използвахме функцията ABS за да премахнете знака минус.
- След това запишете файла.
- След това натиснете Alt+F8 на клавиатурата, за да отворите диалоговия прозорец Макрос.
- След това изберете
- След това щракнете върху Изпълнявайте .
Както виждате, успешно използвахме датата във VBA и открихме просрочените дни.
Подобни четива
- Как да използвате функцията VBA Space в Excel (3 примера)
- Използване на функцията VBA ChDir в Excel (4 подходящи примера)
- Как да използвате функцията IsNull в Excel VBA (5 примера)
- Използване на VBA While Wend Statement в Excel (4 примера)
- Как да извикате Sub във 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 на клавиатурата, за да отворите диалоговия прозорец Макрос.
- След това изберете find_year .
- След това щракнете върху Изпълнявайте .
Накрая можете да видите, че сме успели да извлечем годината на раждане от всяка дата. Също така намерихме годината на раждане на последния запис, като използвахме датата на VBA в Excel.
3. Добавяне на дни в дата с помощта на VBA
Сега можете да дефинирате променливата date и да я използвате, за да добавите датата. За целта използваме дататаAdd Можете да използвате тази функция, за да добавите дни, месеци и години към определена дата.
Разгледайте следния набор от данни:
Тук можете да видите някои имена и някои дати, свързани с тях. Сега нашата цел е да добавим още пет дни към тези дати и да генерираме нова дата.
📌 Стъпки
- Първо, натиснете 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 в момента на изпълнение.
✎
Ако се опитате да присвоите променлива за дата като низ/текст, това ще доведе до грешка.
✎
Стойността по подразбиране на Дата е 0:00:00 (полунощ) на 1 януари 0001 г.
Заключение
В заключение се надявам, че този урок ви е предоставил част от полезните знания за датата в кодовете на VBA. Препоръчваме ви да научите и да приложите всички тези инструкции към вашия набор от данни. Изтеглете работната тетрадка за упражнения и ги изпробвайте сами. Също така не се колебайте да дадете обратна връзка в раздела за коментари. Вашата ценна обратна връзка ни мотивира да създаваме подобни уроци.
Не забравяйте да проверите нашия уебсайт Exceldemy.com за различни проблеми и решения, свързани с Excel.
Продължавайте да изучавате нови методи и да се развивате!