Tarkista, onko lomapäivä määräpäivänä Microsoft Excelin VBA: n avulla

Anonim

Tässä artikkelissa luomme käyttäjän määrittämän toiminnon (UDF) tarkistaaksemme, onko lomapäivä määritettynä päivänä, mukaan lukien lauantait ja sunnuntait viikonloppuna.

Tämän näytteen raakatiedot koostuvat sarakkeessa A olevista päivämääristä. Selvitämme, onko kyseinen päivä vapaapäivä, mukaan lukien lauantai tai sunnuntai.

Olemme määrittäneet lomapäivät "Lomat" -arkin sarakkeessa A.

Olemme luoneet mukautetun IsHoliday -toiminnon löytääksesi loman tilan tiettynä päivänä.

Toiminnon syntaksi

IsHoliday (päivämäärä, sis. Lauantait, mukaan lukien sunnuntait)

InclSaturdays ja InclSundays ovat valinnaisia ​​parametreja. Oletuksena molemmilla on TOSI -arvo. Jos haluat muuttaa lauantain ja sunnuntain työpäiviksi, muuta vastaavan parametrin arvoksi EPÄTOSI.

Olemme käyttäneet alla olevaa kaavaa solussa C9 löytääksesi päivämäärän lomatilan solusta A9 pitäen lauantaita työpäivänä.

= IsHoliday (A9, FALSE)

Olemme käyttäneet solun D9 alla olevaa kaavaa löytääksesi solun A9 päivämäärän lomatilan pitäen lauantaita ja sunnuntaita työpäivinä.

= IsHolidays (A9, FALSE, FALSE)

Olemme käyttäneet alla olevaa kaavaa solussa E9 löytääksesi solun A9 päivämäärän lomatilan ottaen huomioon lauantait ja sunnuntait viikonloppuisin.

= IsHolidays (A9)

Looginen selitys

IsHoliday -toiminnossa tarkistamme ensin, onko parametrissa annettu päivämäärä määritetyssä lomaluettelossa. Jos lomalistalla on päivämäärä, palauta lähtö "Loma". Jos päivämäärää ei ole lomalistalla, tarkista, onko päivämäärä lauantai vai sunnuntai. Tarkista annetun syöttöparametrin perusteella, sisällytetäänkö vai suljetaanko lauantai vai sunnuntai lomina.

Koodin selitys

Aseta RngFind = laskentataulukot ("Lomat"). Sarakkeet (1). Etsi (LngDate)

Yllä olevaa koodia käytetään etsimään paikka, jossa määritetty päivämäärä on lomalistalla.

Jos ei, RngFind ei ole sitten mitään

OK = "Loma"

GoTo Last

Loppu Jos

Yllä olevaa koodia käytetään tarkistamaan, onko lomapäiväluettelossa määritetty päivämäärä. Jos ehto palauttaa TOSI, mukautettu toiminto palauttaa "Loma" -lähdön ja ohjaus siirtyy UDF: n viimeiselle riville.

Seuraa koodia alla

 Vaihtoehto Selkeä toiminto IsHoliday (LngDate As Date, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Muuttujien ilmoittaminen Dim RngFind As Range Dim OK merkkijonona' Alustetaan muuttuja OK = "Työpäivä" Virhe Jatka seuraavaksi Paikan löytäminen, jossa määritetty päivämäärä on Lomat -taulukossa Aseta RngFind = Työarkit ("Lomat"). Sarakkeet (1). Etsi (LngDate) On Error GoTo 0 'Tarkistetaan, onko kyseinen päivä vapaapäivä Jos ei RngFind ei ole mitään Sitten OK = "Loma" GoTo Last End Jos tarkistetaan, onko lauantai tiettynä päivänä Jos Sisältää lauantait Sitten Jos Viikonpäivä (LngDate, 2) = 6 Sitten OK = "Loma" GoTo Last End If End Jos Tarkistetaan onko kello sunnuntai annettu päivämäärä Jos sis. sunnuntai sitten Jos viikonpäivä (LngDate, 2) = 7 Sitten OK = "loma" Loppu Jos loppu jos viimeinen: IsHolidays = OK End -toiminto 

Jos pidit tästä blogista, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.

Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse