Obsah
V aplikaci Microsoft Visual Basic jsou funkce data nebo jakékoli koncepty související s datem nezbytné k provádění různých operací v datové sadě. Můžete se ocitnout v různých situacích, kdy budete muset tyto funkce použít. V tomto výukovém kurzu se seznámíte s funkcí Date jazyka VBA s vhodnými příklady a vhodnými ilustracemi. Také vám poskytneme několik funkcí data.které můžete implementovat do svého pracovního listu.
Stáhnout cvičebnici
Použití VBA Date.xlsm
Úvod do funkce VBA Date
Excel kategorizuje data v Datum/čas Jedná se o vestavěnou funkci. Můžeme ji použít v makrech VBA k provádění libovolných operací souvisejících s datem.
Než začnete pracovat s funkcí Date, musíte se seznámit s funkcí Proměnné data ve VBA .
⏺ Syntaxe
Date()⏺ Argumenty Vysvětlení
Neexistují žádné argumenty.
⏺ Návraty
Vrátí aktuální datum.
⏺ K dispozici v
Excel pro Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 pro Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000
⏺ Příklad
Jak víte, nejsou zde žádné argumenty, můžete je pouze zadat následujícím způsobem:
Sub vba_date() Dim current_date As Date current_date = Date MsgBox current_date End Sub
Při práci s funkcí Date neuvádíme v kódech VBA žádné závorky, jako je tomu v tomto příkladu.
Výstup :
12 funkcí data ve VBA, které byste se měli naučit
Nyní si v následujících kapitolách ukážeme několik dalších funkcí pro práci s datem, které můžete ve VBA využít k mnoha účelům. Přečtěte si tyto kapitoly, abyste se dozvěděli o všech možných způsobech práce s datem ve VBA. Doporučujeme vám, abyste je měli ve svém arzenálu. Určitě to zlepší vaše znalosti.
1. Funkce DateAdd jako datum ve VBA
Ve VBA používáme funkci DateAdd, která přidává dny v určitém datu. Poté vrátí výsledné datum.
Syntaxe:
DateAdd(interval, číslo, datum)
Argumenty:
interval: Je povinné. Řetězcový výraz je časový interval, který chcete přidat.
číslo: Povinné. Jedná se o číselný výraz, který představuje počet intervalů, které chcete přidat. Může být kladný (pro získání dat v budoucnosti) nebo záporný (pro získání dat v minulosti).
datum: Původní datum/čas.
Nyní je interval argumenty mohou mít následující nastavení:
yyyy - Rok
q - Čtvrtletí
m - Měsíc
y - Den v roce
d - Den
w - Všední den
ww - Týden
h - Hodina
n - Minutka
s - Druhý
Úryvek kódu :
Sub dateadd_function() Dim result_Date As Date result_Date = DateAdd("d", 15, "1/31/2022") MsgBox result_Date End Sub
Výstup:
Jak vidíte, do aktuálního data ve VBA se přidalo 15 dat.
Přečtěte si více: Jak používat funkci IsDate ve VBA (3 příklady)
2. Funkce DateDiff ve VBA
Funkce DateDiff vrací hodnotu Variant (Long), která určuje počet časových intervalů mezi dvěma zadanými daty.
Syntaxe :
DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )
Argumenty:
interval: Je vyžadováno. Řetězcový výraz je časový interval, který chcete přidatŘetězcový výraz, který je časovým odstupem, který použijete pro výpočet rozdílu mezi dvěma daty.
date1,date2 : Povinné; Variant (Date). Dvě data, která chcete použít při výpočtu.
prvnídenvtýdnu: Nepovinné. Konstanta, která určuje první den v týdnu. Pokud není pevně zadána, předpokládá se neděle.
prvnítýdenroku: Nepovinné. Konstanta, která určuje první týden roku. Pokud není nastavena, předpokládá se, že prvním týdnem je týden, ve kterém se objeví 1. leden.
Nyní je interval argumenty mohou mít následující nastavení:
yyyy - Rok
q - Čtvrtletí
m - Měsíc
y - Den v roce
d - Den
w - Všední den
ww - Týden
h - Hodina
n - Minutka
s - Druhý
Na stránkách prvnídenvtýdnu argument má tato nastavení:
vbSunday - využívá neděli jako nejpřednější den v týdnu.
vbMonday - zaměstnává pondělí jako první den v týdnu.
vbTuesday - je úterý prvním dnem v týdnu.
vbWednesday - zaměstnává středu jako první den v týdnu.
vbThursday - je čtvrtek spíše dnem v týdnu.
vbFriday - zaměstnává pátek jako první den v týdnu.
vbSaturday - je sobota prvním dnem v týdnu.
vbUseSystemDayOfTheWeek - použije první den v týdnu, který je definován nastavením vašeho zařízení.
Na stránkách prvnítýdenroku má tato nastavení:
vbFirstJan1 - využívá v týdnu od 1. ledna.
vbFirstFourDays - zaměstnává první týden, který má v novém roce alespoň čtyři dny.
vbFirstFullWeek - funguje celý první týden v roce.
vbSystem - používá první týden v roce podle umístění zařízení.
Úryvek kódu:
Sub DateDiff_Function() Dim result As Long result = DateDiff("d", "1/31/2022", "2/12/2022") MsgBox result End Sub
Výstup :
Nakonec vrátí rozdíl mezi oběma daty ve VBA.
Přečtěte si více: Jak používat funkci VBA DateDiff v aplikaci Excel (9 příkladů)
3. Funkce DatePart jako Date
Funkce DatePart vrací variantu (Integer) obsahující definovanou část zadaného data.
Syntaxe :
DatePart(interval, date, [ firstdayofweek, [ firstweekofyear ]])
Argumenty:
interval: Je vyžadováno. Řetězcový výraz je časový interval, který chcete přidatŘetězcový výraz, který je časovým odstupem, který použijete pro výpočet rozdílu mezi dvěma daty.
datum: Povinné; Variant (Date). Datum, které chcete použít při výpočtu.
prvnídenvtýdnu: Nepovinné. Konstanta, která určuje první den v týdnu. Pokud není pevně zadána, předpokládá se neděle.
prvnítýdenroku: Nepovinné. Konstanta, která určuje první týden roku. Pokud není nastavena, předpokládá se, že prvním týdnem je týden, ve kterém se objeví 1. leden.
Nyní je interval argumenty mohou mít následující nastavení:
yyyy - Rok
q - Čtvrtletí
m - Měsíc
y - Den v roce
d - Den
w - Všední den
ww - Týden
h - Hodina
n - Minutka
s - Druhý
Na stránkách prvnídenvtýdnu argument má tato nastavení:
vbSunday - využívá neděli jako nejpřednější den v týdnu.
vbMonday - zaměstnává pondělí jako první den v týdnu.
vbTuesday - je úterý prvním dnem v týdnu.
vbWednesday - zaměstnává středu jako první den v týdnu.
vbThursday - je čtvrtek spíše dnem v týdnu.
vbFriday - zaměstnává pátek jako první den v týdnu.
vbSaturday - je sobota prvním dnem v týdnu.
vbUseSystemDayOfTheWeek - použije první den v týdnu, který je definován nastavením vašeho zařízení.
Na stránkách prvnítýdenroku má tyto hodnoty:
vbFirstJan1 - provozuje týden včetně 1. ledna.
vbFirstFourDays - používá první týden, který má nanejvýš čtyři dny v novém roce.
vbFirstFullWeek - využívá první celý týden v roce.
vbSystem - zaměstnává první týden v roce podle výběru umístění zařízení.
Úryvek kódu :
Sub DatePart_Function() Dim result As Integer result = DatePart("m", "10/11/2022") MsgBox result End Sub
Výstup :
Tímto způsobem můžete tuto funkci data používat v kódech VBA.
Přečtěte si více: Jak používat funkci VBA FileDateTime v aplikaci Excel (3 použití)
4. Funkce DateSerial
Datum můžete zobrazit na základě zadaného roku, měsíce a dne pomocí příkazu The DateSerial funkce.
Syntaxe:
DateSerial(rok, měsíc, den)
Argumenty:
rok - Povinné pole. Číslo mezi 100 a 9999 včetně nebo číselný výraz, který symbolizuje rok.
měsíc - Povinné pole. Celočíselná hodnota, která definuje měsíc.
den - Povinné pole. Celočíselná hodnota popisující den.
Úryvek kódu:
Sub date_serial() Dim date_special As Date date_special = DateSerial(2022, 1, 11) MsgBox date_special End Sub
Výstup :
Přečtěte si více: Jak používat VBA TimeSerial v aplikaci Excel (3 příklady)
4. Funkce VBA DateValue
Nyní použijeme funkci DateValue k definici data.
Syntaxe :
DateValue(datum)
Argument:
Zde se datum argumentem je obvykle řetězcový výraz popisující datum od 1. ledna 100 do 31. prosince 9999. Bez ohledu na to může datum dále symbolizovat jakýkoli výraz, který může symbolizovat datum, čas nebo datum i čas v tomto rozsahu.
Úryvek kódu:
Sub Date_value() Dim result As Date result = DateValue("January, 10, 2022") MsgBox result End Sub
Výstup :
Jak vidíte, úspěšně jsme použili funkci datum v kódech VBA.
5. Funkce Day ve VBA
Vrací variantu (Integer) určující reálné číslo v rozsahu 1 až 31 včetně, které vyjadřuje den v měsíci.
Syntaxe :
Den(datum)
Argument:
Požadovaný argument datum je libovolný Variant, číselný výraz, řetězcový výraz nebo libovolná kombinace. Představuje datum. Pokud datum obsahuje Null, vrátí také Null.
Úryvek kódu:
Sub day_function() Dim date1, the_day date1 = #12/12/2023# the_day = Day(date1) MsgBox the_day End Sub
Výstup:
Jak vidíte, pomocí kódů VBA jsme zjistili, že den daného data je 12.
Související obsah: Formátovací funkce VBA v aplikaci Excel (8 použití s příklady)
6. Funkce VBA Měsíc jako datum
Vrací Variant (Integer) definující reálné číslo v rozsahu 1 až 12 včetně, které vyjadřuje měsíc v roce.
Syntaxe :
Měsíc(datum)
Argument:
Požadovaným argumentem data je libovolný Variant, číselný výraz, řetězcový výraz nebo libovolná kombinace. Představuje datum. Pokud datum obsahuje Null, vrátí také Null.
Úryvek kódu:
Sub month_function() Dim date1, the_month date1 = #12/12/2023# the_month = Month(date1) MsgBox the_month End Sub
Výstup:
Související obsah: Jak používat funkci VBA Right v aplikaci Excel (6 příkladů)
Podobná čtení
- Jak používat funkci VBA Environ (4 příklady)
- Jak používat VBA a funkce v aplikaci Excel (4 příklady)
- Příkazy VBA If - Then - Else v aplikaci Excel (4 příklady)
- Jak používat funkci VBA Abs v aplikaci Excel (9 příkladů)
- Jak používat funkci Concatenate v aplikaci Excel VBA (4 metody)
7. Funkce MonthName
Vrátí řetězec demonstrující zadaný měsíc.
Syntaxe :
Název měsíce(month, [ abbreviate ])
Argument:
měsíc: Vyžaduje se. Číselný název měsíce. Například leden je 1, únor je 2 atd.
zkracovat: Je nepovinné. Logická hodnota, která ukazuje, zda má být název měsíce zkrácen. Pokud je vynechána, výchozí hodnota je False, což znamená, že název měsíce nebude zkrácen.
Úryvek kódu:
Sub MonthName_Function() Dim month_name As String month_name = MonthName(9, True) MsgBox month_name End Sub
Výstup:
Jak vidíte, název měsíce jsme zjistili pomocí této funkce VBA Date.
8. Funkce ve všední den
Vrací Varianta ( Celé číslo ) s reálným číslem vyjadřujícím den v týdnu.
Syntaxe :
Víkend(date, [ firstdayofweek ])
Argument:
datum: Požadovaným argumentem data je libovolný Variant, číselný výraz, řetězcový výraz nebo libovolná kombinace. Představuje datum. Pokud datum obsahuje Null, vrátí také Null.
prvnídenvtýdnu: Nepovinné. Konstanta, která určuje první den v týdnu. Pokud není pevně zadána, předpokládá se neděle.
Na stránkách prvnídenvtýdnu argument má tato nastavení:
vbSunday - využívá neděli jako nejpřednější den v týdnu.
vbMonday - zaměstnává pondělí jako první den v týdnu.
vbTuesday - je úterý prvním dnem v týdnu.
vbWednesday - zaměstnává středu jako první den v týdnu.
vbThursday - je čtvrtek spíše dnem v týdnu.
vbFriday - zaměstnává pátek jako první den v týdnu.
vbSaturday - je sobota prvním dnem v týdnu.
vbUseSystemDayOfTheWeek - použije první den v týdnu, který je definován nastavením vašeho zařízení.
Vrátit parametry
Tato funkce vrací celé číslo. Význam těchto celých čísel je tedy následující:
1 - Neděle
2 - Pondělí
3 - Úterý
4 - Středa
5 - čtvrtek
6 - Pátek
7 - sobota
Úryvek kódu:
Sub Weekday_Function() Dim week_day As Integer week_day = Weekday("4/27/2022") MsgBox week_day End Sub
Výstup:
Jak vidíte, funkce VBA date vrátí hodnotu 4, což znamená středa.
Související obsah: Jak používat funkci Fix v aplikaci Excel VBA (4 příklady)
9. Funkce VBA WeekdayName
Vrací řetězec zobrazující omezený den v týdnu.
Syntaxe :
WeekdayName(den v týdnu, zkratka, první den týdne)
Argument:
všední den: Povinné pole. Číselná identifikace dne v týdnu. Číselná hodnota každého dne závisí na nastavení nastavení firstdayofweek.
zkracovat: Toto je nepovinné. Logická hodnota, která určuje, zda má být název dne v týdnu zkrácen. Pokud je vynechána, výchozí hodnota je False, což znamená, že název dne v týdnu nebude zkrácen ani zkrácen.
prvnídenvtýdnu: Nepovinné pole. Číselná hodnota, která označuje první den v týdnu. Může nabývat různých hodnot.
Na stránkách prvnídenvtýdnu argument může nabývat následujících hodnot:
vbSunday - využívá neděli jako nejpřednější den v týdnu.
vbMonday - zaměstnává pondělí jako první den v týdnu.
vbTuesday - je úterý prvním dnem v týdnu.
vbWednesday - zaměstnává středu jako první den v týdnu.
vbThursday - je čtvrtek spíše dnem v týdnu.
vbFriday - zaměstnává pátek jako první den v týdnu.
vbSaturday - je sobota prvním dnem v týdnu.
vbUseSystemDayOfTheWeek - použije první den v týdnu, který je definován nastavením vašeho zařízení.
Úryvek kódu:
Sub WeekdayName_Function() Dim weekday_name As String weekday_name = WeekdayName(6) MsgBox weekday_name End Sub
Výstup:
Jak vidíte, výše uvedené kódy VBA zobrazují název dne v týdnu.
Související obsah: Jak používat funkci VBA WeekdayName v aplikaci Excel (2 příklady)
10. Funkce Year ve VBA Date
Vrací variantu (Integer) s reálným číslem vyjadřujícím rok.
Syntaxe :
Rok(datum)
Argument:
Požadovaný argument datum je libovolný Variant, číselný výraz, řetězcový výraz nebo libovolná kombinace. Představuje datum. Pokud datum obsahuje Null, vrátí také Null.
Úryvek kódu:
Sub year_function() Dim date1, the_year date1 = #12/12/2023# the_year = Year(date1) MsgBox the_year End Sub
Výstup:
Zde vidíte rok zadaného data po implementaci kódu VBA.
Přečtěte si více: Jak používat funkci VBA Nahradit v aplikaci Excel (11 aplikací)
11. Funkce FormatDateTime
Tato funkce vrací výraz formátovaný jako datum nebo čas.
Syntaxe :
FormatDateTime(Date, [ NamedFormat ])
Argument:
Datum: Povinné pole. Výraz data, který se má formátovat.
NamedFormat: Jedná se o číselnou hodnotu, která zobrazuje formát data/času. Pokud je vynechána, používá se formát. vbGeneralDate .
Na stránkách NamedFormat může nabývat následujících hodnot:
vbGeneralDate(0): Zobrazení data a/nebo času. Pokud je přítomna část s datem, vyjádřete ji jako krátké datum. Pokud je přítomna část s časem, zobrazte ji jako dlouhý čas. Pokud jsou přítomny obě části, zobrazí se obě.
vbLongDate(1): Zobrazte datum pomocí konfigurace dlouhého data vybrané v regionálním nastavení počítače.
vbShortDate(2): Zobrazení data pomocí krátkého formátu data určeného v regionálním nastavení počítače.
vbLongTime(3): Zobrazení času pomocí formátu času uvedeného v regionálním nastavení počítače.
vbShortTime(4): Zobrazení času pomocí 24hodinového formátu (hh:mm).
Úryvek kódu:
Sub FormatDateTime_Function() d = ("2022-02-03 18:25") MsgBox ("Format 1 : " & FormatDateTime(d)) MsgBox ("Format 2 : " & FormatDateTime(d, 1)) MsgBox ("Format 3 : " & FormatDateTime(d, 2)) MsgBox ("Format 4 : " & FormatDateTime(d, 3)) MsgBox ("Format 5 : " & FormatDateTime(d, 4)) End Sub
Výstup:
Po spuštění kódu se zobrazí následující dialogová okna:
Zde si můžete prohlédnout všechny formáty času a data ve VBA.
Přečtěte si více: Jak používat funkci VBA TimeValue (6 relevantních příkladů)
12. Funkce VBA CDate
Funkce převede platný výraz data a času na typické datum.
Syntaxe :
CDate(datum)
Argument:
Požadovaným argumentem data je libovolný Variant, číselný výraz, řetězcový výraz nebo libovolná kombinace. Představuje datum. Pokud datum obsahuje Null, vrátí také Null.
Úryvek kódu:
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
Výstup:
Jak vidíte, náš kód VBA právě vrátil typický formát data aplikace Excel.
Související obsah: Jak používat funkci VBA DIR v aplikaci Excel (7 příkladů)
Příklady dat VBA
V následujících kapitolách vám nabídneme tři praktické a vhodné příklady s daty pomocí VBA. Tyto příklady budou obsahovat problémy související s daty a jejich řešení. Doporučujeme vám všechny tyto příklady přečíst a procvičit si je, abyste si zlepšili své znalosti VBA. Pojďme se do nich pustit.
1. Výpočet dnů zpoždění pomocí data ve VBA
Význam slova overdue je dít se pozdě nebo po termínu. Late, zejména po termínu nebo příliš pozdě na splnění požadavku.
Předpokládejme, že máte odevzdat úkol, který má být odevzdán v neděli. Je však úterý a vy jste ho ještě neodevzdali. Můžete to nazvat dvěma dny zpoždění.
Podívejte se na následující soubor dat:
Zde máme soubor dat některých studentů a datum odevzdání jejich úkolu. Můžete vidět poslední datum odevzdání. Naším cílem je najít datum zpoždění na základě data odevzdání. Nyní, abyste toho dosáhli, postupujte podle následujících kroků:
📌 Kroky
- Nejprve stiskněte Alt+F11 na klávesnici otevřete editor VBA.
- Pak vyberte Vložit> Modul .
- Poté zadejte následující kód:
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 = "Odesláno dnes" ElseIf Cells(cell, 4).Value> due_date Then J = due_date - Cells(cell, 4).Value J = Abs(J) Cells(cell, 5).Value = J & " Overdue Days" Else Cells(cell, 5).Value = "No Overdue" End If Next cellEnd Sub
Použili jsme funkce ABS odstranit znaménko minus.
- Poté soubor uložte.
- Poté stiskněte tlačítko Alt+F8 na klávesnici otevřete dialogové okno Makro.
- Dále vyberte
- Pak klikněte na Spustit .
Jak vidíte, úspěšně jsme použili datum ve VBA a našli dny zpoždění.
Podobná čtení
- Jak používat funkci VBA Space v aplikaci Excel (3 příklady)
- Použití funkce VBA ChDir v aplikaci Excel (4 vhodné příklady)
- Jak používat funkci IsNull v Excelu VBA (5 příkladů)
- Použití příkazu VBA While Wend v aplikaci Excel (4 příklady)
- Jak zavolat podřízený program ve VBA v aplikaci Excel (4 příklady)
2. Zjištění roku narození z data pomocí VBA
Nyní můžete vyhledat Rok od určitého data. To je poměrně jednoduché.
Podívejte se na následující soubor dat:
Zde se zobrazuje datum narození některých osob. Naším cílem je z data získat rok narození a také rok narození posledního záznamu Elizabeth.
📌 Kroky
- Nejprve stiskněte Alt+F11 na klávesnici otevřete editor VBA.
- Pak vyberte Vložit>Modul .
- Poté zadejte následující kód:
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 "Rok narození poslední položky: " & Year(last_entry) End Sub
- Poté soubor uložte.
- Poté stiskněte tlačítko Alt+F8 na klávesnici otevřete dialogové okno Makro.
- Dále vyberte find_year .
- Pak klikněte na Spustit .
Nakonec vidíte, že jsme úspěšní při extrakci roku narození z jednotlivých dat. Také jsme zjistili rok narození posledního záznamu pomocí data VBA v aplikaci Excel.
3. Přidání dnů v datu pomocí VBA
Nyní můžete definovat proměnnou date a použít ji k přidání data. K tomu použijeme následující příkaz. DateAdd Tuto funkci můžete použít k přidání dnů, měsíců a let k určitému datu.
Podívejte se na následující soubor dat:
Zde vidíte některá jména a k nim připojená data. Naším cílem je nyní přidat k daným datům dalších pět dní a vygenerovat nové datum.
📌 Kroky
- Nejprve stiskněte Alt+F11 na klávesnici otevřete editor VBA.
- Pak vyberte Vložit>Modul .
- Poté zadejte následující kód:
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
Zde jsme jako argument ve funkci DateAdd použili "d". Pro přidání let, resp. měsíců, jej můžete změnit na "y" nebo "m",
- Poté soubor uložte.
- Poté stiskněte tlačítko Alt+F8 na klávesnici otevřete dialogové okno Makro.
- Dále vyberte.
- Pak klikněte na Spustit .
Jak vidíte, úspěšně jsme přidali dny do data pomocí data ve VBA. Nyní můžete kód upravit podle svého výběru.
💬 Co si zapamatovat
✎ Funkce VBA Date ve skutečnosti funguje jako funkce TODAY v aplikaci Excel.
✎ VBA DATE je v Excelu nevolatilní funkce. To znamená, že uchová data i při přerušení napájení.
✎
VBA v podstatě ukládá hodnoty Date jako DATE v okamžiku implementace.
✎
Pokud se tedy pokusíte přiřadit proměnnou datum jako řetězec/text, dojde k chybě.
✎
Výchozí hodnota Date je 0:00:00 (půlnoc) 1. ledna 0001.
Závěr
Závěrem doufám, že vám tento návod poskytl kus užitečných znalostí o Date v kódech VBA. Doporučujeme vám naučit se všechny tyto pokyny a aplikovat je na vaši datovou sadu. Stáhněte si cvičný sešit a vyzkoušejte si je sami. Neváhejte také poskytnout zpětnou vazbu v sekci komentářů. Vaše cenná zpětná vazba nás motivuje k vytváření podobných návodů.
Nezapomeňte se podívat na naše webové stránky Exceldemy.com pro různé problémy a řešení související s aplikací Excel.
Učte se novým metodám a neustále se rozvíjejte!