Kontrollerar om det är semester på det angivna datumet med VBA i Microsoft Excel

Anonim

I den här artikeln kommer vi att skapa en användardefinierad funktion (UDF) för att kontrollera om det är semester på det angivna datumet, inklusive eller exklusive lördagar och söndagar som lediga dagar.

Rådata för detta prov består av datum i följd i kolumn A. Vi kommer att ta reda på om det är semester på det angivna datumet, inklusive eller exklusive ledig vecka på lördag eller söndag.

Vi har specificerat semesterdatum i kolumn A på bladet "Semester".

Vi har skapat "IsHoliday" anpassad funktion för att hitta status för semester på det angivna datumet.

Funktionssyntax

IsHoliday (Datum, InclSaturdays, InclSundays)

InclSaturdays och InclSundays är valfria parametrar. Som standard har båda SANT -värde. För att ändra lördag och söndag till arbetsdagar, ändra värdet på respektive parameter till FALSE.

Vi har använt formeln nedan i cell C9 för att hitta semesterstatus för datum i cell A9 med tanke på lördag som en arbetsdag.

= IsHoliday (A9, FALSE)

Vi har använt formeln nedan i cell D9 för att hitta semesterstatus för datum i cell A9 med tanke på lördagar och söndagar som arbetsdagar.

= IsHoliday (A9, FALSE, FALSE)

Vi har använt nedanstående formel i cell E9 för att hitta semesterstatus för datum i cell A9 med tanke på att lördagar och söndagar är lediga veckor.

= IsHoliday (A9)

Logisk förklaring

I funktionen "IsHoliday" kontrollerar vi först om ett givet datum i parametern finns i den angivna semesterlistan. Om datum finns i semesterlistan, returnera "Holiday" som utdata. Om datum inte finns i semesterlistan, kontrollera om datumet är en lördag eller en söndag. Kontrollera om du vill inkludera eller utesluta en lördag eller en söndag som helgdag baserat på ingångsparametern.

Kodförklaring

Ställ in RngFind = Worksheets ("Holidays"). Kolumner (1) .Find (LngDate)

Ovanstående kod används för att hitta platsen där det angivna datumet finns i semesterlistan.

Om inte RngFind är ingenting då

OK = "Semester"

GoTo Last

Avsluta om

Ovanstående kod används för att kontrollera om angivet datum finns i semesterlistan. Om villkoret returnerar TRUE, returnerar den anpassade funktionen "Holiday" som utmatning och kontrollen skiftar till UDF: s sista rad.

Följ koden nedan

 Alternativ Explicit Function IsHoliday (LngDate As Date, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Declaring variables Dim RngFind As Range Dim OK As String' Initialize the variable OK = "Working day" On Error Resume Next ' Hitta platsen där det angivna datumet finns i semesterbladet Ställ in RngFind = Arbetsblad ("Helgdagar"). Kolumner (1) .Find (LngDate) Vid fel Gå till 0 'Kontrollera om det är semester på det angivna datumet Om inte RngFind är ingenting Sedan OK = "Holiday" GoTo Last End If 'Kontrollerar om det är lördag på givet datum If InclSaturdays Then If Weekday (LngDate, 2) = 6 Sedan OK = "Holiday" GoTo Last End If End If' Kontrollerar om det är söndag den given date If InclSundays Then If Weekday (LngDate, 2) = 7 Then OK = "Holiday" End If End If Last: IsHoliday = OK End Function 

Om du gillade den här bloggen, dela den med dina vänner på Facebook. Du kan också följa oss på Twitter och Facebook.

Vi vill gärna höra från dig, låt oss veta hur vi kan förbättra vårt arbete och göra det bättre för dig. Skriv till oss på e -postwebbplatsen