{"id":55001349,"date":"2022-02-01T00:00:00","date_gmt":"2023-11-20T14:02:24","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1349"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Feiertage_per_VBA_ermitteln","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/","title":{"rendered":"Feiertage per VBA ermitteln"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/77c035dd8e674a558fa5cb72f26ded79\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wenn Sie mit Access Termine verwalten, werden Sie auch Feiertage ber&uuml;cksichtigen wollen. Die entsprechenden Datumsangaben liefert Access leider nicht frei Haus &#8211; Sie m&uuml;ssen selbst eine entsprechende Funktion bereitstellen. Der vorliegende Beitrag zeigt, wie Sie die Feiertage ermitteln und wie Sie schnell pr&uuml;fen, ob ein Feiertag auf ein bestimmtes Datum f&auml;llt.<\/b><\/p>\n<p>Es gibt verschiedene Gruppen von Feiertagen: Solche, die jedes Jahr auf den gleichen Termin fallen (wie Neujahr, Weihnachten oder der Tag der deutschen Einheit), Tage, die vom Datum des Ostersonntags abh&auml;ngen, das auf komplizierte Art berechnet wird, und Tage, die vom Datum des vierten Advents abh&auml;ngen. Au&szlig;erdem m&uuml;ssen Sie bei der Ermittlung von Feiertagen ber&uuml;cksichtigen, dass es einige Feiertage nur in bestimmten Bundesl&auml;ndern gibt.<\/p>\n<p>So ist Heilige Dreik&ouml;nige am 6. Januar nur in acht Bundesl&auml;ndern ein Feiertag, in den &uuml;brigen Bundesl&auml;ndern wird gearbeitet. Au&szlig;erdem &auml;ndern sich die Feiertage der verschiedenen Bundesl&auml;nder gelegentlich oder es kommen neue Feiertage hinzu &#8211; so ist der Internationale Frauentag als Feiertag noch recht neu und wird nur in Berlin begangen und der Weltkindertag findet als Feiertag nur in Th&uuml;ringen statt.<\/p>\n<h2>Tabellen oder reiner Code?<\/h2>\n<p>Vor dem Zusammenstellen der L&ouml;sung zu diesem Beitrag stand die Frage im Raum, ob man die Basisdaten zu den Feiertagen in Tabellen speichert oder ob man diese komplett per VBA-Code ermittelt. In Anbetracht dessen, dass die Feiertage nur alle Jubeljahre ge&auml;ndert werden, haben wir uns f&uuml;r die reine VBA-Variante entschieden &#8211; auch vor dem Hintergrund, dass Sie so nur ein einziges Standardmodul in Ihre Anwendung kopieren m&uuml;ssen, wenn Sie die dynamische Ermittlung der Feiertage verwenden m&ouml;chten. Der Einsatz einer reinen VBA-L&ouml;sung bedeutet zun&auml;chst, dass einige grundlegende Informationen in Enumerationen gespeichert werden.  Die erste Enumeration hei&szlig;t <b>eBundesland <\/b>und nimmt alle Bundesl&auml;nder in Form entsprechender Konstanten und Zahlenwerte auf. Sie sieht wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>Enum eBundesland\r\n     eBadenWuerttemberg = 1\r\n     eBayern = 2\r\n     eBerlin = 4\r\n     eBrandenburg = 8\r\n     eBremen = 16\r\n     eHamburg = 32\r\n     eHessen = 64\r\n     eMecklenburgVorpommern = 128\r\n     eNiedersachsen = 256\r\n     eNordrheinWestfalen = 512\r\n     eRheinlandPfalz = 1024\r\n     eSaarland = 2048\r\n     eSachsen = 4096\r\n     eSachsenAnhalt = 8192\r\n     eSchleswigHolstein = 16384\r\n     eThueringen = 32768\r\nEnd Enum<\/pre>\n<p>Warum nun erhalten die Konstanten f&uuml;r die Bundesl&auml;nder ausschlie&szlig;lich Zweierpotenzen als Zahlenwerte? Nun: So k&ouml;nnen wir einfach festlegen und ermitteln, welcher Feiertag in welchem Bundesland gefeiert wird. Dazu nutzen wir eine zweite Enumeration, welche die Feiertage auflistet und deren Zahlenwert Informationen dar&uuml;ber liefert, welche Bundesl&auml;nder den jeweiligen Feiertag begehen. Diese Enumeration k&ouml;nnen Sie in Kurz- oder Langform verwenden. Hier ist eine abgek&uuml;rzte Version der Langform:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>Enum eFeiertageBundeslaender\r\n     eNeujahr = eBadenWuerttemberg + eBayern + eBerlin  + eBrandenburg + eBremen + eHamburg + eHessen +  eMecklenburgVorpommern + eNiedersachsen +  eNordrheinWestfalen + eRheinlandPfalz + eSaarland +  eSachsen + eSachsenAnhalt + eSchleswigHolstein +  eThueringen\r\n     ...\r\n     eWeltkindertag = eThueringen\r\n     eInternationalerFrauentag = eBerlin\r\nEnd Enum<\/pre>\n<p>Wie gut zu erkennen ist, werden zu jedem Feiertag die Konstanten aller Bundesl&auml;nder summiert, in denen der jeweilige Feiertag stattfindet. Da wir den Konstanten der Bundesl&auml;nder Zweierpotenzen zugewiesen haben, k&ouml;nnen wir theoretisch statt der etwas l&auml;ngeren Ausdr&uuml;cke auch einen Zahlenwert angeben. F&uuml;r Feiertage, die in allen Bundesl&auml;ndern stattfinden, w&auml;re dies etwa 32.768 + 16.384 + 8.192 + 4.096 + 2.048 + 1.024 + 512 + 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1, also 65.535. Allerdings lassen sich die Informationen doch besser als Konstante pr&uuml;fen.<\/p>\n<h2>Ermittlung des Datums des vierten Advents<\/h2>\n<p>Der vierte Advent ist der letzte Sonntag vor dem ersten Weihnachtstag und kann somit auch auf Heiligabend fallen. Der erste bis vierte Advent sind in allen Bundesl&auml;ndern Feiertage. Der erste, zweite und dritte Advent wird jeweils an den Sonntagen vor dem vierten Advent gefeiert, somit sind diese Feiertage vom Datum des vierten Advents abh&auml;ngig. Auch der Bu&szlig;- und Bettag, der allerdings nur in Sachsen Feiertag ist, h&auml;ngt vom Datum des vierten Advents ab. Den vierten Advent berechnen wir so:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>VierterAdvent(intJahr<span style=\"color:blue;\"> As Integer<\/span>)<span style=\"color:blue;\"> As Date<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>dat<span style=\"color:blue;\"> As Date<\/span>\r\n     dat = CDate(\"24.12.\" & intJahr)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> Weekday(dat, vbSunday) = vbSunday\r\n         dat = dat - 1\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     VierterAdvent = dat\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Diese Funktion stellt den Wert der Variablen <b>dat <\/b>einfach auf den 24. Dezember des Jahres ein, f&uuml;r welches das Datum des vierten Advents ermittelt werden soll, und wird in einer <b>Do While<\/b>-Schleife so lange um jeweils einen Tag in Richtung Jahresbeginn verschoben, bis es auf einen Sonntag f&auml;llt. Dies kann auch gleich beim ersten Durchlauf der Fall sein &#8211; dann f&auml;llt Heiligabend genau auf den vierten Advent. Die vom vierten Advent abh&auml;ngigen Feiertage werden dann durch Subtraktion der entsprechenden Anzahl Tage ermittelt.<\/p>\n<h2>Ermittlung des Datums des Ostersonntags<\/h2>\n<p>Die Ermittlung des Ostersonntags erfolgt durch eine recht komplizierte Berechnung, die durch die folgende Funktion abgebildet wird:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>Ostersonntag(intJahr<span style=\"color:blue;\"> As Integer<\/span>)<span style=\"color:blue;\"> As Date<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>a<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>b<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>c<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>d<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>e<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intTag<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intMonat<span style=\"color:blue;\"> As Integer<\/span>\r\n     a = intJahr <span style=\"color:blue;\">Mod<\/span> 19\r\n     b = intJahr <span style=\"color:blue;\">Mod<\/span> 4\r\n     c = intJahr <span style=\"color:blue;\">Mod<\/span> 7\r\n     d = (19 * a + 24) <span style=\"color:blue;\">Mod<\/span> 30\r\n     e = (2 * b + 4 * c + 6 * d + 5) <span style=\"color:blue;\">Mod<\/span> 7\r\n     intTag = 22 + d + e\r\n     intMonat = 3\r\n     <span style=\"color:blue;\">If <\/span>intTag &gt; 31<span style=\"color:blue;\"> Then<\/span>\r\n         intTag = d + e - 9\r\n         intMonat = 4\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     Ostersonntag = CDate(intTag & \".\"  & intMonat & \".\" & intJahr)\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Diese Funktion sorgt daf&uuml;r, dass der Ostersonntag in Abh&auml;ngigkeit von der Jahreszahl an einem Tag zwischen dem 23. M&auml;rz und dem 26. April liegt. Wenn man sich &uuml;berlegt, dass Ostern (und die davon abh&auml;ngigen Tage) genau wie Weihnachten Jahrestage bestimmter Ereignisse sind, fragt man sich schon, warum hier keine einfachere Regelung gefunden wurde &#8230;<\/p>\n<h2>Array der Feiertage zusammenstellen<\/h2>\n<p>Die grundlegenden Funktionen und Enumerationen haben wir nun zusammengestellt. Es fehlt noch eine Funktion, die alle Informationen zusammenf&uuml;hrt und ein Array zur&uuml;ckliefert, das alle Feiertagsdaten f&uuml;r ein per Parameter angegebenes Jahr enth&auml;lt. Ein zweiter Parameter gibt an, f&uuml;r welches Bundesland die Feiertage zusammengestellt werden sollen. Dies alles erledigt die Funktion <b>FeiertageArray<\/b> aus Listing 1. Der erste Parameter erwartet die Angabe einer Jahreszahl, also beispielsweise <b>2022<\/b>, der zweite eine der Konstanten der Enumeration der Bundesl&auml;nder, also etwa <b>eNordrheinWestfalen<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>FeiertageArray(intJahr<span style=\"color:blue;\"> As Integer<\/span>, lngBundesland<span style=\"color:blue;\"> As <\/span>eBundesland)<span style=\"color:blue;\"> As Variant<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>arr()<span style=\"color:blue;\"> As String<\/span>, i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>datOstersonntag<span style=\"color:blue;\"> As Date<\/span>, datVierterAdvent<span style=\"color:blue;\"> As Date<\/span>\r\n     datOstersonntag = Ostersonntag(intJahr)\r\n     datVierterAdvent = VierterAdvent(intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eNeujahr And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Neujahr\", ISODatum(\"1.1.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eHeiligeDreiKoenige And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, _\r\n         arr, \"Heilige drei K&ouml;nige\", ISODatum(\"6.1.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eKarfreitag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Karfreitag\", _\r\n         ISODatum(datOstersonntag - 2)\r\n     <span style=\"color:blue;\">If <\/span>(eOstersonntag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Ostersonntag\", _\r\n         ISODatum(datOstersonntag)\r\n     <span style=\"color:blue;\">If <\/span>(eOstermontag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Ostermontag\", _\r\n         ISODatum(datOstersonntag + 1)\r\n     <span style=\"color:blue;\">If <\/span>(eTagDerArbeit And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Tag der Arbeit\", _\r\n         ISODatum(\"1.5.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eChristiHimmelfahrt And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, _\r\n         \"Christi Himmelfahrt\", ISODatum(datOstersonntag + 39)\r\n     <span style=\"color:blue;\">If <\/span>(ePfingstmontag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Pfingstmontag\", _\r\n         ISODatum(datOstersonntag + 50)\r\n     <span style=\"color:blue;\">If <\/span>(eFronleichnam And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Fronleichnam\", _\r\n         ISODatum(datOstersonntag + 60)\r\n     <span style=\"color:blue;\">If <\/span>(eMariaHimmelfahrt And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Maria Himmelfahrt\", _\r\n         ISODatum(\"15.8.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eTagDerDeutschenEinheit And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, _\r\n         \"Tag der deutschen Einheit\", ISODatum(\"3.10.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eReformationstag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Reformationstag\", _\r\n         ISODatum(\"31.10.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eAllerheiligen And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Allerheiligen\", _\r\n         ISODatum(\"1.11.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eBussUndBettag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Bu&szlig;- und Bettag\", _\r\n         ISODatum(datVierterAdvent - 32)\r\n     <span style=\"color:blue;\">If <\/span>(eErsterAdvent And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Erster Advent\", _\r\n         ISODatum(datVierterAdvent - 21)\r\n     <span style=\"color:blue;\">If <\/span>(eZweiterAdvent And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Zweiter Advent\", _\r\n         ISODatum(datVierterAdvent - 14)\r\n     <span style=\"color:blue;\">If <\/span>(eDritterAdvent And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Dritter Advent\", _\r\n         ISODatum(datVierterAdvent - 7)\r\n     <span style=\"color:blue;\">If <\/span>(eVierterAdvent And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Vierter Advent\", _\r\n         ISODatum(datVierterAdvent)\r\n     <span style=\"color:blue;\">If <\/span>(eErsterWeihnachtstag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, _\r\n         \"Erster Weihnachtstag\", ISODatum(\"25.12.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eZweiterWeihnachtstag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, _\r\n         \"Zweiter Weihnachtstag\", ISODatum(\"26.12.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eWeltkindertag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, \"Weltkindertag\", _\r\n         ISODatum(\"20.9.\" & intJahr)\r\n     <span style=\"color:blue;\">If <\/span>(eInternationalerFrauentag And lngBundesland) = lngBundesland<span style=\"color:blue;\"> Then<\/span> FeiertagHinzufuegen i, arr, _\r\n         \"Internationaler Frauentag\", ISODatum(\"8.3.\" & intJahr)\r\n     FeiertageArray = arr\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>[<\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Ermitteln aller Feiertage eines Jahres f&uuml;r ein Bundesland<\/span><\/b><\/p>\n<p>Die Funktion soll ein Array mit den Feiertagen zur&uuml;ckliefern, wobei der erste Wert den Namen des Feiertags enth&auml;lt und der zweite das Datum des Feiertags. Die Daten der beiden Stichtage (Ostersonntag und der vierte Advent) werden in den Variablen <b>datOs-tersonntag <\/b>und <b>datVierterAdvent <\/b>gespeichert und sp&auml;ter zur Berechnung der davon abh&auml;ngigen Feiertage herangezogen. Die weiter oben vorgestellten Funktionen <b>Ostersonntag <\/b>und <b>VierterAdvent <\/b>f&uuml;llen die beiden Datumsvariablen <b>datOstersonntag <\/b>und <b>datVierter-Advent <\/b>gleich zu Beginn der Funktion.<\/p>\n<p>Dann pr&uuml;ft die Prozedur f&uuml;r jeden Feiertag, ob dieser in dem mit dem Parameter <b>lngBundesland <\/b>&uuml;bergebenen Bundesland begangen wird. Dabei macht sich die Funktion die Enumerationen zunutze: Ein Ausdruck wie <b>(eNeujahr And lngBundesland) = lngBundesland <\/b>liefert so etwa den Wert <b>True <\/b>zur&uuml;ck, wenn der Feiertag im angegebenen Bundesland gefeiert wird. Wie funktioniert das? <b>eNeujahr <\/b>entspricht genau wie <b>lngBundesland <\/b>einem Zahlenwert. <b>eNeuJahr<\/b> hat den Zahlenwert <b>65.535<\/b>, das Bundesland <b>eNordrheinWestfalen <\/b>entspricht beispielsweise dem Wert <b>1<\/b>. Dadurch, dass wir den Bundesl&auml;ndern Zweierpotenzen als Wert zugewiesen haben, k&ouml;nnen wir durch einen Ausdruck wie <b>eNeujahr And lngBundesland <\/b>ermitteln, ob <b>eNordrheinWestfalen <\/b>in <b>eNeuJahr <\/b>enthalten ist. Diese arithmetische beziehungsweise bin&auml;re <b>Und<\/b>-Verkn&uuml;pfung liefert genau den Wert der gemeinsamen Zweierpotenz, in diesem Fall <b>1<\/b> &#8211; dieses Bundesland begeht also diesen Feiertag. Wenn dies der Fall ist, ruft die Funktion eine weitere Funktion namens <b>FeiertagHinzufuegen <\/b>mit einigen Parametern auf:<\/p>\n<pre>FeiertagHinzufuegen i, arr, \"Neujahr\", ISODatum(\"1.1.\" & intJahr)<\/pre>\n<p>Der Parameter <b>i <\/b>enth&auml;lt die laufende Nummer des aktuell abgearbeiteten Feiertags, <b>arr <\/b>ist das Array mit der zu f&uuml;llenden Liste der Feiertage, der dritte Parameter enth&auml;lt die Bezeichnung des Feiertags und der vierte das mit der Funktion <b>ISODatum <\/b>im Format <b>#yyyy\/mm\/dd# <\/b>formatierte Datum. Die Funktion <b>FeiertagHinzufuegen <\/b>sieht so aus:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>FeiertagHinzufuegen(i, arr()<span style=\"color:blue;\"> As String<\/span>,  strFeiertag<span style=\"color:blue;\"> As String<\/span>, strDatum<span style=\"color:blue;\"> As String<\/span>)\r\n     ReDim Preserve arr(2, i)\r\n     arr(0, i) = strFeiertag\r\n     arr(1, i) = strDatum\r\n     i = i + 1\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Die Funktion f&uuml;gt lediglich den Namen des Feiertags und das Datum zum Array hinzu und erh&ouml;ht den Z&auml;hler <b>i <\/b>um <b>1<\/b>. Dadurch, dass alle Parameter standardm&auml;&szlig;ig mit <b>ByRef<\/b> &uuml;bergeben werden, spiegeln sich die &Auml;nderungen direkt in den Variablen der aufrufenden Funktion wider.<\/p>\n<h2>Verwenden des Arrays<\/h2>\n<p>Das resultierende Array k&ouml;nnen Sie auf verschiedene Arten weiternutzen. Wenn Sie beispielsweise alle Feiertage einfach im Direktfenster ausgeben m&ouml;chten, verwenden Sie die folgende Prozedur:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>FeiertageAusgeben()\r\n     <span style=\"color:blue;\">Dim <\/span>arr<span style=\"color:blue;\"> As Variant<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     arr = Feiertage(2022, eNordrheinWestfalen)\r\n     For i = <span style=\"color:blue;\">LBound<\/span>(arr, 2) To <span style=\"color:blue;\">UBound<\/span>(arr, 2)\r\n         <span style=\"color:blue;\">Debug.Print<\/span> arr(0, i), arr(1, i)\r\n     <span style=\"color:blue;\">Next<\/span> i\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Beachten Sie, dass Sie der <b>LBound<\/b>&#8211; und der <b>UBound<\/b>-Funktion zum Ermitteln der unteren und oberen Grenze des Arrays einen zweiten Parameter mitgeben m&uuml;ssen. Dieser gibt an, dass die Gr&ouml;&szlig;e der zweiten Dimension ausgelesen werden soll.<\/p>\n<p>Der Grund daf&uuml;r, dass wir die Z&auml;hlervariable in die zweite Dimension geschrieben haben, ist der, dass die <b>Redim<\/b>-Anweisung ausschlie&szlig;lich die Gr&ouml;&szlig;e der letzten Dimension anpassen kann. Der Inhalt des von <b>FeiertageArray <\/b>zur&uuml;ckgegebenen Arrays sieht im Direktfenster wie in Bild 1 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1349_001.png\" alt=\"Ausgabe der Feiertage eines Bundeslandes im Direktbereich des VBA-Editors\" width=\"424,5589\" height=\"327,0884\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Ausgabe der Feiertage eines Bundeslandes im Direktbereich des VBA-Editors<\/span><\/b><\/p>\n<h2>Feiertage in einer Collection speichern<\/h2>\n<p>Wenn Sie hingegen pr&uuml;fen m&ouml;chten, ob ein bestimmtes Datum ein Feiertag ist, verwenden Sie besser eine <b>Collection<\/b>. Die <b>Collection <\/b>hat den Vorteil, dass Sie beim Anlegen eines Elements mit dem <b>Key<\/b>-Parameter einen Schl&uuml;ssel angeben k&ouml;nnen.<\/p>\n<p>Der <b>Value<\/b>-Parameter hingegen nimmt den eigentlichen Wert auf. Wenn Sie den Feiertag-Status f&uuml;r ein beliebiges Datum ermitteln m&ouml;chten, brauchen Sie dieses nur statt des Indexes der <b>Items<\/b>-Auflistung anzugeben. Die folgende Prozedur schreibt die Feiertage aus dem Array in eine Collection:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>FeiertageCollection(intJahr<span style=\"color:blue;\"> As Integer<\/span>,  lngBundesland<span style=\"color:blue;\"> As <\/span>eBundesland)<span style=\"color:blue;\"> As <\/span>Collection\r\n     <span style=\"color:blue;\">Dim <\/span>col<span style=\"color:blue;\"> As <\/span>Collection\r\n     <span style=\"color:blue;\">Dim <\/span>arr<span style=\"color:blue;\"> As Variant<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> col = <span style=\"color:blue;\">New<\/span> Collection\r\n     arr = Feiertage(intJahr, lngBundesland)\r\n     For i = 0 To <span style=\"color:blue;\">UBound<\/span>(arr, 2) - <span style=\"color:blue;\">LBound<\/span>(arr, 2)\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(arr(0, i)) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n             col.Add arr(0, i), arr(1, i)\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> i\r\n     <span style=\"color:blue;\">Set<\/span> FeiertageCollection = col\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<h2>Pr&uuml;fen, ob ein Datum ein Feiertag ist<\/h2>\n<p>Die Funktion <b>IstFeiertag <\/b>pr&uuml;ft, ob das angegebene Datum ein Feiertag ist. Falls nicht, erzeugt der Zugriff auf den entsprechenden Key der Collection einen Fehler, der wie folgt abgefangen wird:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>IstFeiertag(dat<span style=\"color:blue;\"> As Date<\/span>, &micro; \r\n                   lngBundesland<span style=\"color:blue;\"> As <\/span>eBundesland)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>col<span style=\"color:blue;\"> As <\/span>Collection\r\n     <span style=\"color:blue;\">Dim <\/span>bol<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> col = FeiertageCollection(Year(dat),  lngBundesland)\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     bol = <span style=\"color:blue;\">Len<\/span>(col.Item(ISODatum(dat))) &gt; 0\r\n     <span style=\"color:blue;\">If <\/span>Err.Number = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span>bol<span style=\"color:blue;\"> Then<\/span>\r\n             IstFeiertag = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Der Aufruf erfolgt beispielsweise im Direktfenster wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> IstFeiertag(\"25.12.2011\", eBadenWuerttemberg)<\/pre>\n<p>Nat&uuml;rlich k&ouml;nnen Sie die Feiertagsdaten auch in einer Tabelle der Zielanwendung speichern und die Daten daraus beziehen.<\/p>\n<h2>Feiertage in Tabelle speichern<\/h2>\n<p>Zum Speichern von Feiertagen in eine Tabelle haben wir eine passende Tabelle angelegt. Diese enth&auml;lt nur zwei Felder &#8211; eines zum Speichern des Namens des Feiertags und eines f&uuml;r das Datum des Feiertags (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1349_002.png\" alt=\"Tabelle zum Speichern von Feiertagen\" width=\"499,5589\" height=\"328,6134\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Tabelle zum Speichern von Feiertagen<\/span><\/b><\/p>\n<h2>Prozedur zum F&uuml;llen der Feiertagstabelle<\/h2>\n<p>Um diese Tabelle komfortabler zu f&uuml;llen, legen wir eine Prozedur namens <b>FeiertageInTabelle <\/b>an (siehe Listing 2). Diese erwartet zwei Parameter:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>FeiertageInTabelle(intJahr<span style=\"color:blue;\"> As Integer<\/span>, lngBundesland<span style=\"color:blue;\"> As <\/span>eBundesland)\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>arr<span style=\"color:blue;\"> As Variant<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     arr = FeiertageArray(intJahr, lngBundesland)\r\n     db.Execute \"DELETE FROM tblFeiertage\", dbFailOnError\r\n     For i = <span style=\"color:blue;\">LBound<\/span>(arr, 2) To <span style=\"color:blue;\">UBound<\/span>(arr, 2)\r\n         db.Execute \"INSERT INTO tblFeiertage(Feiertagsname, Feiertagsdatum) VALUES(''\" & arr(0, i) & \"'', ''\" _\r\n             & arr(1, i) & \"'')\", dbFailOnError\r\n     <span style=\"color:blue;\">Next<\/span> i\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Eintragen der Feiertage f&uuml;r ein Jahr und ein Bundesland in eine Tabelle<\/span><\/b><\/p>\n<ul>\n<li><b>intJahr<\/b>: Das Jahr, f&uuml;r das die Feiertage eingetragen werden sollen.<\/li>\n<li><b>intBundesland<\/b>: Eine der Konstanten der Enumeration <b>eBundesland<\/b>, die angibt, f&uuml;r welches Bundesland die Feiertage angelegt werden sollen.<\/li>\n<\/ul>\n<p>Die Prozedur nutzt die Funktion <b>FeiertageArray<\/b>, um ein Array mit den Feiertagen zu ermitteln. Dann l&ouml;scht sie alle Eintr&auml;ge der Tabelle <b>tblFeiertage <\/b>und durchl&auml;uft in einer Schleife alle Elemente des Arrays &uuml;ber den Index <b>i<\/b>, dessen Start- und Endwert sie mit den Funktionen <b>LBound <\/b>und <b>UBound <\/b>ermittelt. Innerhalb der Schleife legt die Prozedur jeweils einen neuen Datensatz in der Tabelle <b>tblFeiertage <\/b>an, wobei der mit <b>arr(0, i) <\/b>referenzierte Wert des Arrays im Feld <b>Feiertagsname <\/b>landet und der mit <b>arr(1, i) <\/b>referenzierte Wert im Feld <b>Feiertagsdatum<\/b>.<\/p>\n<h2>Formular zum komfortablen F&uuml;llen der Feiertagstabelle<\/h2>\n<p>Um diese Funktion leichter bedienen zu k&ouml;nnen, haben wir noch ein Formular zur Datenbank hinzugef&uuml;gt. Dieses besteht aus einem Hauptformular namens <b>frmFeiertage <\/b>und dem Unterformular <b>sfmFeiertage<\/b> (siehe Bild 3). Das Unterformular zeigt die Daten der Tabelle <b>tblFeiertage <\/b>in der Datenblattansicht an. Das Hauptformular enth&auml;lt zwei Kombinationsfelder, mit denen der Benutzer das Jahr und das Bundesland f&uuml;r die zu erstellenden Feiertage ausw&auml;hlen kann.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1349_003.png\" alt=\"Entwurf des Formulars zum Anlegen von Feiertagen\" width=\"424,5589\" height=\"479,5122\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Entwurf des Formulars zum Anlegen von Feiertagen<\/span><\/b><\/p>\n<p>Die Eigenschaft <b>Herkunftstyp <\/b>des ersten Kombinationsfeldes <b>cboJahr <\/b>ist auf den Wert <b>Wertliste <\/b>eingestellt, damit wir der Eigenschaft <b>Datensatzherkunft <\/b>eine Liste der durch Semikola getrennten Jahre zuweisen k&ouml;nnen. Der Inhalt sieht wie folgt aus:<\/p>\n<pre>2021;2022;2023;2024;2025;2026;2027;2028;2029;2030;2031;2032;2033;2034;2035;2036;2037;2038;2039;2040<\/pre>\n<p>Auch das zweite Kombinationsfeld <b>cboBundeslaender <\/b>ist als Wertliste ausgelegt und enth&auml;lt die folgenden Daten:<\/p>\n<pre>1;\"Baden-W&uuml;rttemberg\";2;\"Bayern\";4;\"Berlin\";8;\"Brandenburg\";16;\"Bremen\";32;\"Hamburg\";64;\"Hessen\";128;\"Mecklenburg-Vorpommern\";256;\"Niedersachsen\";512;\"Nordrhein-Westfalen\";1024;\"Rheinland-Pfalz\";2048;\"Saarland\";4096;\"Sachsen\";8192;\"Sachsen-Anhalt\";16384;\"Schleswig-Holstein\";32768;\"Th&uuml;ringen\"<\/pre>\n<p>Dies entspricht dem Inhalt der Enumeration <b>eBundesland<\/b>.<\/p>\n<p>Nach der Auswahl der beiden Felder kann der Benutzer die Schaltfl&auml;che <b>cmdFeiertageInTabelleAufrufen<\/b>, die dann nur noch die beiden Werte der Kombinationsfelder an die Prozedur <b>FeiertageInTabelle <\/b>&uuml;bergeben und das Unterformular aktualisieren muss:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdFeiertageInTabelle_Click()\r\n     FeiertageInTabelle Me!cboJahr, Me!cboBundeslaender\r\n     Me!sfmFeiertage.Requery\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Beim &Ouml;ffnen des Formulars w&auml;hlen wir schlie&szlig;lich noch Standardwerte f&uuml;r die beiden Kombinationsfelder aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     Me!cboJahr = Year(Date)\r\n     Me!cboBundeslaender = Me!cboBundeslaender.ItemData(0)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag zeigt, wie Sie Feiertage per VBA-Code ermitteln k&ouml;nnen. Um die Funktionen in eigenen Anwendungen zu nutzen, &uuml;bertragen Sie einfach das Modul <b>mdlFeiertage <\/b>und nach Wunsch die Tabelle <b>tblFeiertage <\/b>in die Zielanwendung. Gegebenenfalls sind im Laufe der Zeit die Daten f&uuml;r die Feiertage je Bundesland in der Enumeration <b>eFeiertageBundeslaender <\/b>zu aktualisieren.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>FeiertagePerVBA.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/E6619A58-15CA-441C-8A79-4C1C710D7BD7\/aiu_1349.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Sie mit Access Termine verwalten, werden Sie auch Feiertage ber&uuml;cksichtigen wollen. Die entsprechenden Datumsangaben liefert Access leider nicht frei Haus &#8211; Sie m&uuml;ssen selbst eine entsprechende Funktion bereitstellen. Der vorliegende Beitrag zeigt, wie Sie die Feiertage ermitteln und wie Sie schnell pr&uuml;fen, ob ein Feiertag auf ein bestimmtes Datum f&auml;llt.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66012022,662022,44000025],"tags":[],"class_list":["post-55001349","post","type-post","status-publish","format-standard","hentry","category-66012022","category-662022","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Feiertage per VBA ermitteln - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Feiertage per VBA ermitteln\" \/>\n<meta property=\"og:description\" content=\"Wenn Sie mit Access Termine verwalten, werden Sie auch Feiertage ber&uuml;cksichtigen wollen. Die entsprechenden Datumsangaben liefert Access leider nicht frei Haus - Sie m&uuml;ssen selbst eine entsprechende Funktion bereitstellen. Der vorliegende Beitrag zeigt, wie Sie die Feiertage ermitteln und wie Sie schnell pr&uuml;fen, ob ein Feiertag auf ein bestimmtes Datum f&auml;llt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-20T14:02:24+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/77c035dd8e674a558fa5cb72f26ded79\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Feiertage per VBA ermitteln\",\"datePublished\":\"2023-11-20T14:02:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/\"},\"wordCount\":1992,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/77c035dd8e674a558fa5cb72f26ded79\",\"articleSection\":[\"1\\\/2022\",\"2022\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/\",\"name\":\"Feiertage per VBA ermitteln - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/77c035dd8e674a558fa5cb72f26ded79\",\"datePublished\":\"2023-11-20T14:02:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/77c035dd8e674a558fa5cb72f26ded79\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/77c035dd8e674a558fa5cb72f26ded79\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Feiertage_per_VBA_ermitteln\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Feiertage per VBA ermitteln\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Feiertage per VBA ermitteln - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/","og_locale":"de_DE","og_type":"article","og_title":"Feiertage per VBA ermitteln","og_description":"Wenn Sie mit Access Termine verwalten, werden Sie auch Feiertage ber&uuml;cksichtigen wollen. Die entsprechenden Datumsangaben liefert Access leider nicht frei Haus - Sie m&uuml;ssen selbst eine entsprechende Funktion bereitstellen. Der vorliegende Beitrag zeigt, wie Sie die Feiertage ermitteln und wie Sie schnell pr&uuml;fen, ob ein Feiertag auf ein bestimmtes Datum f&auml;llt.","og_url":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-11-20T14:02:24+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/77c035dd8e674a558fa5cb72f26ded79","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Feiertage per VBA ermitteln","datePublished":"2023-11-20T14:02:24+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/"},"wordCount":1992,"commentCount":6,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/77c035dd8e674a558fa5cb72f26ded79","articleSection":["1\/2022","2022","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/","url":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/","name":"Feiertage per VBA ermitteln - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/77c035dd8e674a558fa5cb72f26ded79","datePublished":"2023-11-20T14:02:24+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/77c035dd8e674a558fa5cb72f26ded79","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/77c035dd8e674a558fa5cb72f26ded79"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Feiertage_per_VBA_ermitteln\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Feiertage per VBA ermitteln"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001349"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001349\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}