Prüfen, ob es Urlaub am angegebenen Tag mit VBA in Microsoft Excel ist
In diesem Artikel erstellen wir eine benutzerdefinierte Funktion (User Defined Function, UDF), um zu überprüfen, ob am angegebenen Datum ein Feiertag ist, einschließlich oder ausschließlich Samstage und Sonntage als freie Woche.
Die Rohdaten für diese Stichprobe bestehen aus aufeinanderfolgenden Daten in Spalte A. Wir werden feststellen, ob es sich um einen Feiertag am angegebenen Datum handelt, einschließlich oder ohne freie Woche am Samstag oder Sonntag.
Wir haben die Feiertagsdaten in der Spalte A auf dem Blatt „Feiertage“ angegeben.
Wir haben die benutzerdefinierte Funktion „IsHoliday“ erstellt, um den Status des Urlaubs zum angegebenen Datum zu ermitteln.
Syntax der Funktion
IsHoliday (Datum, InclSaturdays, InclSundays)
InclSaturdays und InclSundays sind optionale Parameter. Standardmäßig haben beide den Wert TRUE. Um Samstag und Sonntag in Arbeitstage umzuwandeln, ändern Sie den Wert des jeweiligen Parameters in FALSE.
Wir haben die folgende Formel in Zelle C9 verwendet, um den Feiertagsstatus für das Datum in Zelle A9 unter Berücksichtigung des Samstags als Arbeitstag zu ermitteln.
IsHoliday (A9, FALSE)
Wir haben die folgende Formel in Zelle D9 verwendet, um den Feiertagsstatus für das Datum in Zelle A9 unter Berücksichtigung von Samstagen und Sonntagen als Arbeitstagen zu ermitteln.
IsHoliday (A9, FALSE, FALSE)
Wir haben die folgende Formel in Zelle E9 verwendet, um den Feiertagsstatus für das Datum in Zelle A9 zu ermitteln, wobei Samstage und Sonntage als freie Wochen berücksichtigt wurden.
IsHoliday (A9)
Logische Erklärung
In der Funktion „IsHoliday“ prüfen wir zunächst, ob das im Parameter angegebene Datum in der angegebenen Feiertagsliste vorhanden ist. Wenn das Datum in der Feiertagsliste vorhanden ist, geben Sie als Ausgabe „Feiertag“ zurück. Wenn das Datum nicht in der Feiertagsliste vorhanden ist, prüfen Sie, ob das angegebene Datum ein Samstag oder ein Sonntag ist. Überprüfen Sie anhand des angegebenen Eingabeparameters, ob ein Samstag oder ein Sonntag als Feiertage eingeschlossen oder ausgeschlossen werden soll.
Code Erklärung
Setzen Sie RngFind = Arbeitsblätter („Feiertage“). Spalten (1) .Finden (LngDate)
Der obige Code wird verwendet, um den Ort zu finden, an dem das angegebene Datum in der Feiertagsliste vorhanden ist.
Wenn nicht RngFind nichts ist, dann OK = „Holiday“
Zum letzten Ende gehen Wenn der obige Code verwendet wird, um zu überprüfen, ob das angegebene Datum in der Feiertagsliste vorhanden ist. Wenn die Bedingung TRUE zurückgibt, gibt die benutzerdefinierte Funktion „Holiday“ als Ausgabe zurück und das Steuerelement wechselt in die letzte Zeile der UDF.
Bitte folgen Sie unten für den Code
Option 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 'Initializing the variable OK = "Working day" On Error Resume Next 'Finding the location where the specified date exist in the Holidays sheet Set RngFind = Worksheets("Holidays").Columns(1).Find(LngDate) On Error GoTo 0 'Checking whether it is holiday on the given date If Not RngFind Is Nothing Then OK = "Holiday" GoTo Last End If 'Checking whether it is Saturday on given date If InclSaturdays Then If Weekday(LngDate, 2) = 6 Then OK = "Holiday" GoTo Last End If End If 'Checking whether it is Sunday on given date If InclSundays Then If Weekday(LngDate, 2) = 7 Then OK = "Holiday" End If End If Last: IsHoliday = OK End Function
Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.
Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]