Prüfen, ob am angegebenen Datum Feiertag ist, mit VBA in Microsoft Excel

Anonim

In diesem Artikel erstellen wir eine benutzerdefinierte Funktion (UDF), um zu überprüfen, ob am angegebenen Datum Feiertag ist, einschließlich oder ausschließlich von Samstagen und Sonntagen als arbeitsfreie Tage.

Die Rohdaten für diese Stichprobe bestehen aus aufeinanderfolgenden Daten in Spalte A. Wir finden heraus, ob es sich um einen Feiertag an dem angegebenen Datum handelt, einschließlich oder ausschließlich der arbeitsfreien Woche am Samstag oder Sonntag.

Die Feiertagsdaten haben wir in der Spalte A auf dem Blatt „Ferien“ angegeben.

Wir haben die benutzerdefinierte Funktion "IsHoliday" erstellt, um den Status des Feiertags an einem bestimmten Datum zu ermitteln.

Syntax der Funktion

IsHoliday(Datum, inkl. Samstage, inkl. Sonntage)

InclSaturdays und InclSundays sind optionale Parameter. Standardmäßig haben beide den Wert TRUE. Um Samstag und Sonntag in Arbeitstage zu ändern, ändern Sie den Wert des jeweiligen Parameters auf FALSE.

Wir haben die folgende Formel in Zelle C9 verwendet, um den Feiertagsstatus für das Datum in Zelle A9 zu ermitteln, wobei der Samstag als Arbeitstag gilt.

=IstUrlaub(A9,FALSCH)

Wir haben die folgende Formel in Zelle D9 verwendet, um den Feiertagsstatus für das Datum in Zelle A9 zu ermitteln, wobei Samstage und Sonntage als Arbeitstage berücksichtigt werden.

=IstUrlaub(A9,FALSCH,FALSCH)

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 arbeitsfreie Tage berücksichtigt werden.

=IstUrlaub(A9)

Logikerklärung

In der Funktion „IsHoliday“ prüfen wir zunächst, ob das im Parameter angegebene Datum in der angegebenen Feiertagsliste vorhanden ist. Wenn Datum in der Feiertagsliste vorhanden ist, dann als Ausgabe „Holiday“ zurückgeben. Wenn das Datum in der Feiertagsliste nicht vorhanden ist, prüfen Sie, ob das angegebene Datum ein Samstag oder ein Sonntag ist. Prüfen Sie anhand des angegebenen Eingabeparameters, ob ein Samstag oder ein Sonntag als Feiertag ein- oder ausgeschlossen werden soll.

Codeerklärung

Set RngFind = Worksheets("Feiertage").Columns(1).Find(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 = "Urlaub"

GoTo Last

Ende Wenn

Der obige Code wird verwendet, 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 Explizite Funktion IsHoliday(LngDate As Date, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Variablen deklarieren Dim RngFind As Range Dim OK As String 'Initialisieren der Variablen OK = "Working day" On Error Resume Next ' Suchen des Ortes, an dem das angegebene Datum im Feiertagsblatt vorhanden ist Set RngFind = Worksheets("Holidays").Columns(1).Find(LngDate) On Error GoTo 0 'Überprüfen, ob es am angegebenen Datum Feiertag ist Wenn nicht RngFind nichts ist Then OK = "Holiday" GoTo Last End If 'Überprüfen, ob es Samstag an einem bestimmten Datum ist If InclSaturdays Then If Weekday(LngDate, 2) = 6 Then OK = "Holiday" GoTo Last End If End If 'Überprüfen, ob Sonntag am gegebenes Datum If InclSundays Then If Weekday(LngDate, 2) = 7 Then OK = "Holiday" End If End If Last: IsHoliday = OK End Function 

Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn mit Ihren Freunden auf Facebook. Außerdem können Sie uns auf Twitter und Facebook folgen.

Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site