In dit artikel zullen we een door de gebruiker gedefinieerde functie (UDF) maken om te controleren of het een feestdag is op de opgegeven datum, inclusief of exclusief zaterdagen en zondagen als vrije week.
De onbewerkte gegevens voor dit voorbeeld bestaan uit datums in volgorde in kolom A. We zullen zien of het een feestdag is op de opgegeven datum, inclusief of exclusief een vrije week op zaterdag of zondag.
We hebben de vakantiedata vermeld in kolom A op het blad “Vakanties”.
We hebben de aangepaste functie "IsHoliday" gemaakt om de status van de vakantie op de opgegeven datum te vinden.
Syntaxis van functie
IsVakantie(Datum, Inclusief Zaterdag, Inclusief Zondag)
InclSaturdays en InclSundays zijn optionele parameters. Beide hebben standaard de waarde TRUE. Om zaterdag en zondag in werkdagen te veranderen, wijzigt u de waarde van de respectieve parameter in FALSE.
We hebben de onderstaande formule in cel C9 gebruikt om de vakantiestatus voor de datum in cel A9 te vinden, waarbij zaterdag als werkdag wordt beschouwd.
=IsVakantie(A9,FALSE)
We hebben de onderstaande formule in cel D9 gebruikt om de vakantiestatus voor de datum in cel A9 te vinden, waarbij zaterdag en zondag als werkdagen worden beschouwd.
=IsVakantie(A9,FALSE,FALSE)
We hebben de onderstaande formule in cel E9 gebruikt om de vakantiestatus voor de datum in cel A9 te vinden, waarbij zaterdagen en zondagen als vrije week worden beschouwd.
=IsVakantie(A9)
Logische uitleg
In de functie "IsHoliday" controleren we eerst of de opgegeven datum in de parameter bestaat in de opgegeven vakantielijst. Als de datum in de vakantielijst staat, retourneer dan "Vakantie" als uitvoer. Als de datum niet bestaat in de lijst met feestdagen, controleer dan of de opgegeven datum een zaterdag of een zondag is. Controleer op basis van de opgegeven invoerparameter of u een zaterdag of een zondag als vakantiedag wilt opnemen of uitsluiten.
Code uitleg
Stel RngFind = Worksheets ("Feestdagen") in. Kolommen(1).Find (LngDate)
Bovenstaande code wordt gebruikt om de locatie te vinden waar de opgegeven datum voorkomt in de vakantielijst.
Als niet RngFind niets is, dan
OK = "Vakantie"
Ga naar het laatst
Stop als
Bovenstaande code wordt gebruikt om te controleren of de opgegeven datum in de vakantielijst voorkomt. Als de voorwaarde TRUE retourneert, retourneert de aangepaste functie "Vakantie" als uitvoer en verschuift de besturing naar de laatste regel van de UDF.
Volg hieronder voor de code:
Optie Expliciete functie IsHoliday(LngDate As Date, Optioneel InclSaturdays As Boolean = True, _Optioneel InclSundays As Boolean = True) 'Variabelen declareren Dim RngFind As Range Dim OK As String 'Initialiseren van de variabele OK = "Working day" On Error Resume Next ' De locatie zoeken waar de opgegeven datum bestaat in het vakantieblad Set RngFind = Worksheets("Holidays").Columns(1).Find(LngDate) On Error GoTo 0 'Controleren of het een feestdag is op de opgegeven datum If Not RngFind Is Nothing Dan OK = "Vakantie" GoTo Last End If 'Controleren of het zaterdag is op een bepaalde datum If InclSaturdays Then If Weekday(LngDate, 2) = 6 Then OK = "Vakantie" GoTo Last End If End If 'Controleren of het zondag is op gegeven datum Indien InclZondagen Dan Indien Weekdag(LngDate, 2) = 7 Dan OK = "Vakantie" Einde Indien Einde Indien laatste: IsVakantie = OK Einde Functie
Als je deze blog leuk vond, deel hem dan met je vrienden op Facebook. Ook kunt u ons volgen op Twitter en Facebook.
We horen graag van u, laat ons weten hoe we ons werk kunnen verbeteren en voor u kunnen verbeteren. Schrijf ons op de e-mailsite