Kontrola, zda je v zadané datum prázdniny, pomocí VBA v Microsoft Excelu

Anonim

V tomto článku vytvoříme uživatelem definovanou funkci (UDF), abychom zkontrolovali, zda je v zadané datum svátek, včetně sobot a nedělí jako volných dnů.

Nezpracovaná data pro tento vzorek se skládají z dat v pořadí ve sloupci A. Zjistíme, zda je v dané datum svátek, včetně volného týdne v sobotu nebo v neděli.

Termíny svátků jsme specifikovali ve sloupci A na listu „Svátky“.

Vytvořili jsme vlastní funkci „IsHoliday“ pro zjištění stavu dovolené v daný den.

Syntaxe funkce

IsHoliday (datum, včetně sobot, včetně nedělí)

InclSaturdays a InclSundays jsou volitelné parametry. Ve výchozím nastavení mají oba PRAVDU. Chcete -li změnit sobotu a neděli na pracovní dny, změňte hodnotu příslušného parametru na FALSE.

Níže uvedený vzorec v buňce C9 jsme použili k vyhledání prázdninového data pro datum v buňce A9, přičemž sobotu považujeme za pracovní den.

= IsHoliday (A9, FALSE)

Níže jsme použili vzorec v buňce D9, abychom našli stav dovolené pro datum v buňce A9, přičemž za pracovní dny považujeme soboty a neděle.

= IsHoliday (A9, FALSE, FALSE)

Použili jsme níže uvedený vzorec v buňce E9, abychom našli stav dovolené pro datum v buňce A9, přičemž považujeme soboty a neděle za týdenní volno.

= IsHoliday (A9)

Logické vysvětlení

Ve funkci „IsHoliday“ nejprve zkontrolujeme, zda dané datum v parametru existuje v uvedeném seznamu svátků. Pokud v seznamu prázdnin existuje datum, vraťte jako výstup „Dovolená“. Pokud datum v seznamu prázdnin neexistuje, zkontrolujte, zda je dané datum sobota nebo neděle. Na základě zadaného vstupního parametru zkontrolujte, zda jako svátky zahrnout nebo vyloučit sobotu nebo neděli.

Vysvětlení kódu

Nastavit RngFind = pracovní listy ("svátky"). Sloupce (1). Najít (LngDate)

Výše uvedený kód slouží k vyhledání místa, kde v seznamu svátků existuje zadané datum.

Pokud Not RngFind není nic, pak

OK = "Dovolená"

GoTo Last

Konec If

Výše uvedený kód slouží ke kontrole, zda uvedené datum existuje v seznamu svátků. Pokud podmínka vrátí TRUE, pak vlastní funkce vrátí jako výstup „Holiday“ a ovládací prvek se přesune na poslední řádek UDF.

Pro kód prosím postupujte níže

 Možnost Explicitní funkce IsHoliday (LngDate jako datum, volitelně InclSaturdays jako Boolean = True, _ volitelně InclSundays jako Boolean = True) 'Deklarace proměnných Dim RngFind jako rozsah Dim OK OK jako řetězec' Inicializace proměnné OK = „pracovní den“ Při chybě Pokračovat další ' Hledání umístění, kde v listu svátků existuje zadané datum RngFind = pracovní listy ("svátky"). Sloupce (1). Najít (LngDate) Při chybě GoTo 0 'Kontrola, zda je v dané datum svátek Pokud není RngFind není nic Pak OK = "Prázdniny" GoTo Last End If 'Kontrola, zda je v daný den sobota If InclSaturdays Then If Weekday (LngDate, 2) = 6 Then OK = "Holiday" GoTo Last End If End If' Kontrola, zda je neděle dané datum Pokud InclDěle Pak Pokud Den v týdnu (LngDate, 2) = 7 Pak OK = "Prázdniny" Konec Pokud Konec Pokud Poslední: IsHoliday = OK Konec Funkce 

Pokud se vám tento blog líbil, sdílejte ho se svými přáteli na Facebooku. Také nás můžete sledovat na Twitteru a Facebooku.

Rádi bychom od vás slyšeli, dejte nám vědět, jak můžeme zlepšit naši práci a zlepšit ji pro vás. Napište nám na e -mail