{"id":55001590,"date":"2026-04-01T00:00:00","date_gmt":"2026-03-05T20:08:34","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1590"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Datum_schnell_per_Tastatur_einstellen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/","title":{"rendered":"Datum schnell per Tastatur einstellen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/f365ba09647940858df9b17c19968ee8\" width=\"1\" height=\"1\" alt=\"\"><b>Die Eingabe von Datumsangaben ist erstens manchmal unkomfortabel und zweitens passiert es oft, dass Benutzer das Datum im falschen Format eingeben. Dem wollen wir mit der L&ouml;sung aus diesem Beitrag vorbeugen, indem wir die Eingabe vollst&auml;ndig &uuml;ber die Tasten &#8222;Nach oben&#8220;, &#8222;Nach unten&#8220;, &#8222;Nach rechts&#8220; und &#8222;Nach links&#8220; erm&ouml;glichen. Sobald der Benutzer den Fokus auf ein Datumsfeld setzt, wird das aktuelle Datum eingesetzt, sofern das Feld noch leer ist. Dann kann er mit &#8222;Nach links&#8220; und &#8222;Nach rechts&#8220; zwischen den einzelnen Datumsbestandteilen Tag, Monat und Jahr wechseln und mit den Tasten &#8222;Nach oben&#8220; und &#8222;Nach unten&#8220; stellt er schrittweise den gew&uuml;nschten Wert ein. Die Funktionalit&auml;t bilden wir anschlie&szlig;end auch noch in einer Klasse ab, sodass die Funktion einfach mit zwei Zeilen Code zu einem Datums-Textfeld hinzugef&uuml;gt werden kann.<\/b><\/p>\n<p>Datumsfelder sind keine Hexerei. Man legt das Datumfeld in einer Tabelle an und legt die Tabelle als Datensatzquelle f&uuml;r ein Formular fest.<\/p>\n<p>In diesem zieht man das Datumsfeld in den Formularentwurf und kann dieses direkt nutzen. Die Eingabe wird sogar vereinfacht durch das Anklicken des kleinen Kalender-Icons neben dem Textfeld (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_02\/pic_1590_001.png\" alt=\"Herk&ouml;mmliches Textfeld mit Datum\" width=\"424,5589\" height=\"311,0729\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Herk&ouml;mmliches Textfeld mit Datum<\/span><\/b><\/p>\n<p>Wenn man hier allerdings einen Standardwert wie das aktuelle Datum vorgibt und der Benutzer soll dann sein Geburtsdatum eingeben, wird er schnell auf dieses Calendar-Widget verzichten. Denn dort m&uuml;sste er endlos klicken, bis er zum Beispiel ein Datum erreicht, dass viele Jahre zur&uuml;ckliegt.<\/p>\n<p>Auch die manuelle Datumseingabe birgt T&uuml;cken, denn hier muss das Format eingehalten werden. Das ist kein Hexenwerk, dennoch kommt es dabei immer wieder zu Fehleingaben.<\/p>\n<p>Also stellen wir in diesem Beitrag eine L&ouml;sung vor, mit der wir das Datum ganz einfach eingeben k&ouml;nnen &#8211; n&auml;mlich allein mit den Cursor-Tasten, also <b>Nach oben<\/b>, <b>Nach unten<\/b>, <b>Nach links <\/b>und <b>Nach rechts<\/b>.<\/p>\n<p>Dabei sollen gleich beim Fokuserhalt wie in Bild 2 die Tage markiert werden. Damit wei&szlig; der Benutzer, dass er nun die Tage f&uuml;r das gew&uuml;nschte Datum einstellen kann. Er braucht nur noch den gew&uuml;nschten Wert f&uuml;r den Tag mit den Tasten <b>Nach oben <\/b>und <b>Nach unten <\/b>einzustellen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_02\/pic_1590_002.png\" alt=\"Markierung des Tages\" width=\"424,5589\" height=\"204,6799\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Markierung des Tages<\/span><\/b><\/p>\n<p>Dann bet&auml;tigt er die Taste <b>Nach rechts<\/b>, um zum Monat zu wechseln, und legt auf die gleiche Weise wie beim Tag den Monat fest.<\/p>\n<p>Schlie&szlig;lich springt er mit <b>Nach rechts <\/b>zu den Jahren und w&auml;hlt auch noch das Jahr aus. Hierbei haben wir noch eine Komfortfunktion eingebaut, mit welcher der Benutzer bei gedr&uuml;ckter <b>Umschalt<\/b>-Taste 10 Jahre vor- oder zur&uuml;ckspringen kann.<\/p>\n<p>M&ouml;chte man anschlie&szlig;end den Tag oder den Monat korrigieren, kann man diese mit der <b>Nach links<\/b>-Taste erneut ansteuern.<\/p>\n<h2>Programmierung der L&ouml;sung<\/h2>\n<p>In die Umsetzung der L&ouml;sung sind einige Ereignisse des Textfeld-Steuerelements involviert. Als Erstes ben&ouml;tigen wir ein Ereignis, mit dem wir direkt beim Setzen des Fokus auf das Textfeld daf&uuml;r sorgen, dass die ersten beiden Zeichen f&uuml;r die Angabe des Tages selektiert werden.<\/p>\n<p>Hier bietet sich das Ereignis <b>Bei Fokuserhalt <\/b>des Steuerelements an, f&uuml;r das wir die folgende Ereignisprozedur hinterlegen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>txtGeburtsdatum_GotFocus()\r\n    <span style=\"color:blue;\">Call<\/span> txtGeburtsdatumAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese ruft eine Prozedur namens <b>txtGeburtsdatumAktivieren <\/b>auf. Wir lagern die Funktion des Ereignisses in eine eigene Prozedur aus, weil wir diese sp&auml;ter noch von einer anderen Stelle aus aufrufen wollen.<\/p>\n<p>Die Prozedur <b>txtGeburtsdatumAktivieren <\/b>nimmt einen Parameter namens <b>intDatePart<\/b> mit dem Datentyp <b>eDatePart <\/b>entgegen. Mit diesem k&ouml;nnen wir festlegen, welcher Teil des Datums &#8211; Tag, Monat oder Jahr &#8211; markiert werden soll. Die Enumeration definieren wir wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>Enum eDatePart\r\n    datepartday = 0\r\n    datepartmonth = 1\r\n    datepartyear = 2\r\nEnd Enum<\/pre>\n<p>Dann referenziert die Prozedur das Textfeld <b>txtGeburtsdatum <\/b>mit der Variablen <b>txt<\/b>. Dann pr&uuml;ft sie, ob das Textfeld leer ist, und tr&auml;gt in diesem Fall das aktuelle Datum ein.<\/p>\n<p>Das k&ouml;nnen Sie beliebig anpassen, wenn f&uuml;r den jeweiligen Anwendungsfall ein anderes Datum angezeigt werden soll. Schlie&szlig;lich ruft die Prozedur noch eine weitere Routine namens <b>SelectDatePart <\/b>auf und &uuml;bergibt dieser einen Verweis auf das Textfeld und leitet den optionalen Parameter <b>intDatePart <\/b>weiter:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>txtGeburtsdatumAktivieren(<span style=\"color:blue;\">Optional<\/span> intDatePart<span style=\"color:blue;\"> As <\/span>eDatePart)\r\n    <span style=\"color:blue;\">Dim <\/span>txt<span style=\"color:blue;\"> As <\/span>TextBox\r\n    <span style=\"color:blue;\">Set<\/span> txt = Me.txtGeburtsdatum\r\n    <span style=\"color:blue;\">If <\/span>IsNull(txt)<span style=\"color:blue;\"> Then<\/span>\r\n        txt.Value = Date\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    <span style=\"color:blue;\">Call<\/span> SelectDatePart(txt, intDatePart)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Selektieren eines Datumsteils<\/h2>\n<p>Die Prozedur <b>SelectDatePart <\/b>nimmt einen Verweis auf das Textfeld entgegen, sowie einen Wert der Enumeration <b>eDatePart<\/b>, mit dem angegeben wird, ob der Tag, der Monat oder das Jahr selektiert werden soll.<\/p>\n<p>Sie pr&uuml;ft, welchen Wert <b>lngCurrentDatePart <\/b>hat, und stellt abh&auml;ngig davon die beiden Eigenschaften <b>SelStart <\/b>und <b>SelLength <\/b>des mit <b>txt <\/b>&uuml;bergebenen Textfeldes ein. Wir gehen dabei davon aus, dass das Datum im Textfeld immer im Format <b>dd.mm.yyyy <\/b>formatiert ist.<\/p>\n<p>F&uuml;r den Tag wird <b>SelStart <\/b>mit dem Wert <b>0 <\/b>auf das erste Zeichen eingestellt und die L&auml;nge der Markierung auf zwei Zeichen, f&uuml;r den Monat auf die Position <b>3 <\/b>und die L&auml;nge <b>2 <\/b>und f&uuml;r das Jahr auf die Position <b>6 <\/b>und die L&auml;nge <b>4<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>SelectDatePart(txt<span style=\"color:blue;\"> As <\/span>TextBox, _\r\n        lngCurrentDatePart<span style=\"color:blue;\"> As <\/span>eDatePart)\r\n    Select Case lngCurrentDatePart\r\n        <span style=\"color:blue;\">Case <\/span>datepartday\r\n            txt.SelStart = 0\r\n            txt.SelLength = 2\r\n        <span style=\"color:blue;\">Case <\/span>datepartmonth\r\n            txt.SelStart = 3\r\n            txt.SelLength = 2\r\n        <span style=\"color:blue;\">Case <\/span>datepartyear\r\n            txt.SelStart = 6\r\n            txt.SelLength = 4\r\n    <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit ist der erste Teil bereits erledigt &#8211; beim Fokuserhalt des Textfeldes wird gegebenenfalls das aktuelle Datum eingetragen und die ersten beiden Stellen f&uuml;r den Tag werden markiert.<\/p>\n<h2>Bewegen der Markierung im Datumsfeld<\/h2>\n<p>Um die Eingaben des Benutzers im Datumsfeld zu erfassen, vor allem die Nutzung der Tasten <b>Nach oben<\/b>, <b>Nach unten<\/b>, <b>Nach links <\/b>und <b>Nach rechts<\/b>, verwenden wir das Ereignis <b>Bei Taste ab<\/b> des Textfeldes. Die entsprechende Ereignisprozedur liefert beim Aufruf zwei Parameter:<\/p>\n<ul>\n<li><b>KeyCode<\/b>: Code der bet&auml;tigten Taste<\/li>\n<li><b>Shift<\/b>: Angabe, ob die <b>Umschalt<\/b>-, <b>Strg<\/b>&#8211; oder <b>Alt<\/b>-Taste bet&auml;tigt wurde<\/li>\n<\/ul>\n<p>Damit k&ouml;nnen wir sauber erfassen, wie der Benutzer &uuml;ber die Tastatur mit dem Textfeld arbeitet. Im ersten Schritt der Prozedur, deren ersten Teil wir in Listing 1 finden, deaktivieren wir mit <b>Me.Painting = False <\/b>das Neuzeichnen des Formulars, bis die Eingabe abgeschlossen ist.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>txtGeburtsdatum_KeyDown(KeyCode<span style=\"color:blue;\"> As Integer<\/span>, Shift<span style=\"color:blue;\"> As Integer<\/span>)\r\n    <span style=\"color:blue;\">Dim <\/span>txt<span style=\"color:blue;\"> As <\/span>TextBox\r\n    <span style=\"color:blue;\">Dim <\/span>lngCurrentDatePart<span style=\"color:blue;\"> As <\/span>eDatePart\r\n    <span style=\"color:blue;\">Dim <\/span>lngDay<span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>lngMonth<span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>lngYear<span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>lngYears<span style=\"color:blue;\"> As Long<\/span>\r\n    \r\n    Me.Painting = <span style=\"color:blue;\">False<\/span>    \r\n    <span style=\"color:blue;\">Set<\/span> txt = Me.txtGeburtsdatum    \r\n    lngDay = Day(txt.Value)\r\n    lngMonth = Month(txt.Value)\r\n    lngYear = Year(txt.Value)\r\n    \r\n    lngCurrentDatePart = GetCurrentDatePart(txt)\r\n    \r\n    <span style=\"color:blue;\">If <\/span>Shift = acShiftMask<span style=\"color:blue;\"> Then<\/span>\r\n        lngYears = 10\r\n    <span style=\"color:blue;\">Else<\/span>\r\n        lngYears = 1\r\n    <span style=\"color:blue;\">End If<\/span>\r\n        \r\n    Select Case KeyCode\r\n        <span style=\"color:blue;\">Case <\/span>vbKeyLeft, vbKeyRight\r\n            Select Case KeyCode\r\n                <span style=\"color:blue;\">Case <\/span>vbKeyLeft\r\n                    Select Case lngCurrentDatePart\r\n                        <span style=\"color:blue;\">Case <\/span>datepartday\r\n                            lngCurrentDatePart = datepartyear\r\n                        <span style=\"color:blue;\">Case <\/span>datepartmonth\r\n                            lngCurrentDatePart = datepartday\r\n                        <span style=\"color:blue;\">Case <\/span>datepartyear\r\n                            lngCurrentDatePart = datepartmonth\r\n                    <span style=\"color:blue;\">End Select<\/span>\r\n                <span style=\"color:blue;\">Case <\/span>vbKeyRight\r\n                    Select Case lngCurrentDatePart\r\n                        <span style=\"color:blue;\">Case <\/span>datepartday\r\n                            lngCurrentDatePart = datepartmonth\r\n                        <span style=\"color:blue;\">Case <\/span>datepartmonth\r\n                            lngCurrentDatePart = datepartyear\r\n                        <span style=\"color:blue;\">Case <\/span>datepartyear\r\n                            lngCurrentDatePart = datepartday\r\n                    <span style=\"color:blue;\">End Select<\/span>\r\n            <span style=\"color:blue;\">End Select<\/span>\r\n            <span style=\"color:blue;\">Call<\/span> SelectDatePart(txt, lngCurrentDatePart)\r\n            KeyCode = 0\r\n            ...<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Navigieren im Datum und Anpassen der einzelnen Datumsteile (Teil 1)<\/span><\/b><\/p>\n<p>Danach referenzieren wir mit der Variablen <b>txt <\/b>das Textfeld <b>txtGeburtsdatum<\/b>. Den Inhalt des Textfeldes untersuchen wir in den n&auml;chsten drei Anweisungen, um mit den Funktionen <b>Day<\/b>, <b>Month <\/b>und <b>Year <\/b>den Tag, den Monat und das Jahr zu ermitteln.<\/p>\n<p>Danach rufen wir eine Hilfsfunktion namens <b>GetCurrentDatePart <\/b>auf, der wir einen Verweis auf das Textfeld &uuml;bergeben. Sie soll bestimmen, ob gerade der Tag, der Monat oder das Jahr im Textfeld markiert ist. Dazu ermittelt sie die Startposition der Markierung und speichert sie in der Variablen <b>lngSelStart<\/b>.<\/p>\n<p>Dann pr&uuml;ft sie, ob sich die Position zwischen <b>0 <\/b>und <b>2 <\/b>befindet (Tag), zwischen <b>3 <\/b>und <b>5 <\/b>(Monat) oder zwischen <b>6 <\/b>und <b>9 <\/b>(Jahr), und schreibt die entsprechende Konstante der Enumeration <b>eDatePart <\/b>in die Variable <b>lngCurrentDatePart<\/b>. Dieser Wert wird schlie&szlig;lich zur&uuml;ckgegeben:<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>GetCurrentDatePart(txt<span style=\"color:blue;\"> As <\/span>TextBox) _\r\n       <span style=\"color:blue;\"> As <\/span>eDatePart\r\n    <span style=\"color:blue;\">Dim <\/span>lngSelStart<span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>lngCurrentDatePart<span style=\"color:blue;\"> As <\/span>eDatePart\r\n    \r\n    lngSelStart = txt.SelStart\r\n    \r\n    Select Case <span style=\"color:blue;\">True<\/span>\r\n        <span style=\"color:blue;\">Case <\/span>lngSelStart &gt;= 0 And lngSelStart &lt;= 2\r\n            lngCurrentDatePart = datepartday\r\n        <span style=\"color:blue;\">Case <\/span>lngSelStart &gt;= 3 And lngSelStart &lt;= 5\r\n            lngCurrentDatePart = datepartmonth\r\n        <span style=\"color:blue;\">Case <\/span>lngSelStart &gt;= 6 And lngSelStart &lt;= 9\r\n            lngCurrentDatePart = datepartyear\r\n    <span style=\"color:blue;\">End Select<\/span>\r\n    \r\n    GetCurrentDatePart = lngCurrentDatePart\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Die Ereignisprozedur <b>txtGeburtsdatum_KeyDown <\/b>pr&uuml;ft nun, ob der Benutzer derzeit die Umschalttaste gedr&uuml;ckt h&auml;lt, und speichert in diesem Fall den Wert <b>10 <\/b>in der Variablen <b>lngYears<\/b>, sonst den Wert <b>1<\/b>. Dies dient dazu, dass wir sp&auml;ter beim &Auml;ndern der Jahreszahl entweder in Einerschritten oder Zehnerschritten arbeiten k&ouml;nnen.<\/p>\n<p>Nun beginnt die eigentliche Untersuchung der bet&auml;tigten Taste. Dazu verwenden wir eine <b>Select Case<\/b>-Bedingung, deren zu vergleichender Wert der Inhalt des Parameters <b>KeyCode <\/b>ist.<\/p>\n<p>Im ersten Teil pr&uuml;fen wir, ob der Benutzer die Taste <b>Nach links <\/b>oder <b>Nach rechts <\/b>gedr&uuml;ckt hat. In diesem Fall treffen wir in einer weiteren <b>Select Case<\/b>-Bedingung eine weitere Unterscheidung. Der erste <b>Case<\/b>-Zweig wird f&uuml;r die <b>Nach links<\/b>-Taste angesteuert (<b>vbKeyLeft<\/b>).<\/p>\n<p>Darin finden wir eine weitere <b>Select Case<\/b>-Bedingung, in der wir den Wert von <b>lngCurrentDatePart <\/b>untersuchen, also ob die Markierung gerade den Tag, den Monat oder das Jahr enth&auml;lt. Im ersten <b>Case<\/b>-Zweig vergleichen wir mit <b>datepartday<\/b>. In diesem Fall stellen wir <b>lngCurrentDatePart <\/b>auf <b>datepartyear <\/b>ein, damit die Markierung auf das Jahr eingestellt werden kann. Beim Monat springen wir zum Tag, beim Jahr zum Monat.<\/p>\n<p>Die zweite <b>Case<\/b>-Bedingung im &uuml;bergeordneten <b>Select Case<\/b>-Konstrukt wird bei Verwendung der Taste <b>Nach rechts <\/b>ausgel&ouml;st (<b>vbKeyRight<\/b>). In diesem Fall stellen wir die Variable <b>lngCurrentDatePart <\/b>auf den Wert f&uuml;r den Monat ein, wenn sie zuvor auf den Tag eingestellt war, auf das Jahr, wenn der Monat eingestellt war, und auf den Tag, wenn das Jahr eingestellt war. Wir verschieben die Markierung also von links nach rechts.<\/p>\n<p>Nachdem wir in <b>lngCurrentDatePart <\/b>eingestellt haben, welcher Teil nun markiert werden soll, rufen wir die bereits bekannte Prozedur <b>SelectDatePart<\/b> und &uuml;bergeben dieser den Verweis auf das Textfeld und den zu markierenden Datumsteil.<\/p>\n<p>Schlie&szlig;lich stellen wir den Wert des Parameters <b>KeyCode <\/b>auf <b>0 <\/b>ein. Damit sorgen wir daf&uuml;r, dass dieser Tastenanschlag nicht weitergegeben wird.<\/p>\n<p>Wurde die Ereignisprozedur durch die Taste <b>Nach links <\/b>oder <b>Nach rechts <\/b>bet&auml;tigt, werden die <b>Select Case<\/b>-Bedingungen beendet und die Prozedur aktiviert mit Me.<b>Painting = True<\/b> wieder die Bildschirmaktualisierung f&uuml;r das Formular.<\/p>\n<h2>&Auml;ndern von Tag, Monat und Jahr<\/h2>\n<p>Die &Auml;nderung von Tag, Monat oder Jahr realisieren wir in der gleichen Ereignisprozedur, nur dass wir einen anderen Zweig in der <b>Select Case<\/b>-Bedingung ansteuern. Dieser pr&uuml;ft dieses Mal den Parameter <b>KeyCode <\/b>auf die beiden Werte <b>vbKeyUp <\/b>(<b>Nach oben<\/b>) und <b>vbKeyDown <\/b>(<b>Nach unten<\/b>) &#8211; siehe Listing 2.<\/p>\n<pre>    ...\r\n        <span style=\"color:blue;\">Case <\/span>vbKeyUp, vbKeyDown\r\n            Select Case KeyCode\r\n                <span style=\"color:blue;\">Case <\/span>vbKeyUp\r\n                    Select Case lngCurrentDatePart\r\n                        <span style=\"color:blue;\">Case <\/span>datepartday\r\n                            lngDay = GetNextDay(txt.Value, lngDay)\r\n                        <span style=\"color:blue;\">Case <\/span>datepartmonth\r\n                            lngMonth = GetNextMonth(lngMonth)\r\n                        <span style=\"color:blue;\">Case <\/span>datepartyear\r\n                            lngYear = lngYear + lngYears\r\n                    <span style=\"color:blue;\">End Select<\/span>\r\n                <span style=\"color:blue;\">Case <\/span>vbKeyDown\r\n                    Select Case lngCurrentDatePart\r\n                        <span style=\"color:blue;\">Case <\/span>datepartday\r\n                            lngDay = GetPreviousDay(txt.Value, lngDay)\r\n                        <span style=\"color:blue;\">Case <\/span>datepartmonth\r\n                            lngMonth = GetPreviousMonth(lngMonth)\r\n                        <span style=\"color:blue;\">Case <\/span>datepartyear\r\n                            lngYear = lngYear - lngYears\r\n                    <span style=\"color:blue;\">End Select<\/span>\r\n            <span style=\"color:blue;\">End Select<\/span>\r\n            txt.Value = DateSerial(lngYear, lngMonth, lngDay)\r\n            <span style=\"color:blue;\">Call<\/span> SelectDatePart(txt, lngCurrentDatePart)\r\n            KeyCode = 0\r\n        <span style=\"color:blue;\">Case <\/span>vbKeyTab, vbKeyReturn\r\n        <span style=\"color:blue;\">Case Else<\/span>\r\n            KeyCode = 0\r\n    <span style=\"color:blue;\">End Select<\/span>\r\n    \r\n    Me.Painting = <span style=\"color:blue;\">True<\/span>\r\n    \r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Navigieren im Datum und Anpassen der einzelnen Datumsteile (Teil 2)<\/span><\/b><\/p>\n<p>Auch hier differenzieren wir in einer zweiten <b>Select Case<\/b>-Bedingung nach den beiden m&ouml;glichen Werten. Und wieder unterschieden wir nach dem Wert von <b>lngCurrentDatePart<\/b>. Dieses Mal nutzen wir die Zweige der daf&uuml;r verwendeten <b>Select Case<\/b>-Bedingung jedoch daf&uuml;r, den jeweils markierten Wert zu &auml;ndern.<\/p>\n<p>Wenn der Benutzer die <b>Nach oben<\/b>-Taste bet&auml;tigt hat und die Angabe des Tages im Textfeld markiert ist, soll der n&auml;chste Tag eingestellt werden. Leider kann man nicht einfach den Wert <b>1 <\/b>hinzuz&auml;hlen, da es auch sein kann, dass das Textfeld bereits das Monatsende anzeigt &#8211; und dann m&uuml;ssen wir wieder bei <b>1 <\/b>beginnen. Also haben wir die Ermittlung des anzuzeigenden Tages in eine Funktion namens <b>GetNextDay <\/b>ausgelagert, der wir das Datum aus dem Textfeld und den aktuellen Wert von <b>lngDay <\/b>als Parameter &uuml;bergeben.<\/p>\n<p>Die Funktion pr&uuml;ft zuerst, ob das Hinzuf&uuml;gen eines Tages zum aktuellen Datum einen Tag im n&auml;chsten Monat liefern w&uuml;rde. Dazu ermitteln wir schlicht den Monat des aktuellen Datums (zum Beispiel <b>31.1.2026<\/b>) und den Monat des n&auml;chsten Tages (also <b>1.2.2026<\/b>). Sind die Monate nicht gleich, ist das aktuelle Datum der letzte Tag im aktuellen Monat und wir stellen <b>lngDay <\/b>auf <b>1 <\/b>ein. Anderenfalls erh&ouml;hen wir <b>lngDay <\/b>einfach um <b>1<\/b>. Den Wert von <b>lngDay <\/b>geben wir anschlie&szlig;end als Funktionswert zur&uuml;ck:<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>GetNextDay(dat<span style=\"color:blue;\"> As Date<\/span>, lngDay<span style=\"color:blue;\"> As Long<\/span>) _\r\n       <span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">If <\/span>Month(dat) &lt; Month(dat + 1)<span style=\"color:blue;\"> Then<\/span>\r\n        lngDay = 1\r\n    <span style=\"color:blue;\">Else<\/span>\r\n        lngDay = lngDay + 1\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    GetNextDay = lngDay\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Wenn sich in der <b>Select Case<\/b>-Bedingung der Monat als markiertes Element des Datums herausstellt, wollen wir diesen Wert um <b>1 <\/b>erh&ouml;hen. Dazu nutzen wir die Funktion <b>GetNextMonth<\/b>, denn auch den Monat k&ouml;nnen wir nicht einfach um <b>1 <\/b>erh&ouml;hen &#8211; es kann sein, dass das aktuelle Datum sich im Dezember befindet, und dann m&uuml;ssen wir den Monat wieder auf Januar einstellen.<\/p>\n<p><b>GetNextMonth <\/b>erwartet nur den Wert von <b>lngMonth <\/b>als Parameter und untersucht, ob dieser den Wert <b>12 <\/b>enth&auml;lt. In diesem Fall wird <b>lngMonth <\/b>auf <b>1 <\/b>eingestellt, andernfalls wird <b>lngMonth <\/b>um <b>1 <\/b>erh&ouml;ht und anschlie&szlig;end zur&uuml;ckgegeben:<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>GetNextMonth(lngMonth<span style=\"color:blue;\"> As Long<\/span>)\r\n    <span style=\"color:blue;\">If <\/span>lngMonth = 12<span style=\"color:blue;\"> Then<\/span>\r\n        lngMonth = 1\r\n    <span style=\"color:blue;\">Else<\/span>\r\n        lngMonth = lngMonth + 1\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    GetNextMonth = lngMonth\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Allein das Erh&ouml;hen des Jahres muss nicht genauer untersucht werden &#8211; hier addieren wir einfach den Wert <b>1<\/b> beziehungsweise 10, wenn die Umschalttaste aktiviert ist.<\/p>\n<p>Einen &auml;hnlichen Ablauf finden wir vor, wenn der Benutzer die Taste <b>Nach unten <\/b>bet&auml;tigt hat. Ist dann der Tag markiert, wird die Funktion <b>GetPreviousDay <\/b>aufgerufen. Diese pr&uuml;ft zun&auml;chst, ob der Wert von <b>lngDay <\/b>gleich <b>1 <\/b>ist. In diesem Fall soll <b>lngDay <\/b>den Wert des letzten Tages des aktuellen Monats erhalten. Dazu nehmen wir das mit dem Parameter <b>dat <\/b>&uuml;bergebene Datum aus dem Textfeld, addieren einen Monat hinzu, ziehen einen Tag ab und ermitteln dann mit <b>Day <\/b>den Tag. Beispiel: Wenn das aktuelle Datum <b>1.1.2026 <\/b>lautet, z&auml;hlen wir mit <b>DateAdd <\/b>einen Monat hinzu und erhalten den <b>1.2.2026<\/b>. Davon ziehen wir mit <b>-1 <\/b>einen Tag ab und erhalten den <b>31.1.2026<\/b>. Der Wert f&uuml;r den Tag (<b>31<\/b>) landet in <b>lngDay<\/b>.<\/p>\n<p>Hat <b>lngDay <\/b>nicht den Wert <b>1<\/b>, k&ouml;nnen wir einfach den Wert <b>1 <\/b>abziehen, um den gew&uuml;nschten Tag zu erhalten:<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>GetPreviousDay(dat<span style=\"color:blue;\"> As Date<\/span>, _\r\n       lngDay<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">If <\/span>lngDay = 1<span style=\"color:blue;\"> Then<\/span>\r\n        lngDay = Day(DateAdd(\"m\", 1, dat) - 1)\r\n    <span style=\"color:blue;\">Else<\/span>\r\n        lngDay = lngDay - 1\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    GetPreviousDay = lngDay\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Wenn der Benutzer einen Monat vom aktuellen Monat abziehen m&ouml;chte, wird die Funktion <b>GetPreviousMonth<\/b> aufgerufen. Diese nimmt wieder die Nummer des Monats entgegen. Lautet diese <b>1<\/b>, wird <b>lngMonth <\/b>auf <b>12 <\/b>eingestellt, sonst subtrahieren wir einfach den Wert <b>1<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>GetPreviousMonth(lngMonth<span style=\"color:blue;\"> As Long<\/span>) _\r\n       <span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">If <\/span>lngMonth = 1<span style=\"color:blue;\"> Then<\/span>\r\n        lngMonth = 12\r\n    <span style=\"color:blue;\">Else<\/span>\r\n        lngMonth = lngMonth - 1\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    GetPreviousMonth = lngMonth\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<h2>Datum wieder zusammensetzen, anzeigen und den aktuellen Part markieren<\/h2>\n<p>Nachdem wir den neuen Wert f&uuml;r den aktuell markierten Teil des Datums ermittelt und in einer der Variablen <b>lngDay<\/b>, <b>lngMonth <\/b>oder <b>lngYear <\/b>gespeichert haben, stellen wir als Erstes das Datum mit <b>DateSerial <\/b>zusammen und schreiben es wieder in das Textfeld.<\/p>\n<p>Dann rufen wir die Prozedur <b>SelectDatePart <\/b>auf und sorgen daf&uuml;r, dass der vor der &Auml;nderung markierte Datumsteil wieder markiert wird. Auch hier wird <b>KeyCode <\/b>wieder auf den Wert <b>0 <\/b>eingestellt, damit die bet&auml;tigte Taste nicht an das Steuerelement weitergereicht wird.<\/p>\n<h2>Weitere Tasten verarbeiten<\/h2>\n<p>Schlie&szlig;lich m&uuml;ssen wir uns noch um die &uuml;brigen Tasten k&uuml;mmern, die der Benutzer bet&auml;tigen k&ouml;nnte, wenn das Textfeld mit dem Datum aktiviert ist. Jegliche Eingabe wie die einer Zahl w&uuml;rde dazu f&uuml;hren, dass die aktuelle Markierung damit &uuml;berschrieben wird.<\/p>\n<p>Das wollen wir verhindern und legen im <b>Else<\/b>-Zweig f&uuml;r alle nicht anderweitig behandelten Werte von <b>KeyCode <\/b>den Wert <b>0 <\/b>f&uuml;r diesen Parameter fest.<\/p>\n<p>Wir wollen nur zwei Tasten davon ausschlie&szlig;en, n&auml;mlich die <b>Tabulator<\/b>-Taste, die <b>Eingabe<\/b>-Taste und die <b>Escape<\/b>-Taste. Diese ersten beiden sollen wie &uuml;blich funktionieren und bei Bet&auml;tigung den Fokus auf das n&auml;chste Steuerelement in der Aktivierreihenfolge verschieben. Die <b>Escape<\/b>-Taste sorgt daf&uuml;r, dass die &Auml;nderung verworfen wird.<\/p>\n<p>Deshalb f&uuml;gen wir <b>vbKeyTab <\/b>und <b>vbKeyReturn <\/b>in einen eigenen <b>Case<\/b>-Zweig ein, in dem aber keine weiteren Anweisungen ausgef&uuml;hrt werden. Ein weiterer Zweig f&uuml;r die <b>Escape<\/b>-Taste sieht wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Case <\/span>vbKeyEscape\r\n    txt.Value = txt.OldValue\r\n    <span style=\"color:blue;\">Call<\/span> SelectDatePart(txt, intCurrentDatePart)\r\n    KeyCode = 0<\/pre>\n<h2>Mausaktionen im Datums-Textfeld steuern<\/h2>\n<p>Es kann passieren, dass der Benutzer mit der Maus in das Datums-Textfeld klickt. Ohne weitere Ma&szlig;nahmen w&uuml;rde dies dazu f&uuml;hren, dass die Einf&uuml;gemarke wie gew&ouml;hnlich an der Stelle des Mausklicks angezeigt wird oder der Benutzer den gew&uuml;nschten Bereich damit markiert. Das wollen wir verhindern und stattdessen das folgende Verhalten erreichen:<\/p>\n<ul>\n<li>Wenn der Benutzer auf einen der Datumsbestandteile klickt, soll dieser so markiert werden, als ob der Benutzer ihn &uuml;ber die Tastatur angesteuert h&auml;tte.<\/li>\n<li>Wenn der Benutzer mit der Maus eine Markierung aufzieht, soll der Datumsteil selektiert werden, an dem die Markierung beginnt.<\/li>\n<\/ul>\n<p>Dazu hinterlegen wir die folgende Ereignisprozedur f&uuml;r das Ereignis <b>Bei Maustaste auf<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>txtGeburtsdatum_MouseUp(Button<span style=\"color:blue;\"> As Integer<\/span>, _\r\n        Shift<span style=\"color:blue;\"> As Integer<\/span>, X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n    <span style=\"color:blue;\">Dim <\/span>lngCurrentDatePart<span style=\"color:blue;\"> As <\/span>eDatePart\r\n    lngCurrentDatePart = _\r\n        GetCurrentDatePart(Me.txtGeburtsdatum)\r\n    <span style=\"color:blue;\">Call<\/span> txtGeburtsdatumAktivieren(lngCurrentDatePart)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Sie holt mit der <b>GetCurrentDatePart <\/b>eine der Konstanten der Enumeration <b>eDatePart<\/b>, und zwar den, in dem sich die Einf&uuml;gemarke oder der Beginn der Markierung durch die Maus befindet, und speichert diese in <b>lngCurrentDatePart<\/b>.<\/p>\n<p>Dann ruft sie die Prozedur <b>txtGeburtsdatumAktivieren <\/b>auf und &uuml;bergibt den Wert von <b>lngCurrentDatePart<\/b>. Dies sorgt daf&uuml;r, dass der entsprechende Datumsteil markiert wird.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag stellt eine L&ouml;sung vor, mit der wir die Eingabe von Datumswerten in Textfelder stark vereinfachen und au&szlig;erdem fehlersicher machen k&ouml;nnen. Dabei sorgen wir daf&uuml;r, dass der Benutzer nicht mehr das Datum selbst eingeben muss, sondern einfach mit den Tasten <b>Nach links <\/b>und <b>Nach rechts <\/b>zwischen Tag, Monat und Jahr navigiert und mit den Tasten <b>Nach oben <\/b>und <b>Nach unten <\/b>den jeweils markierten Datumsbereich einstellt.<\/p>\n<p>Beim Einstellen des Jahres kann er zudem noch die <b>Umschalt<\/b>-Taste zu Hilfe nehmen, um dieses in Zehnerschritten einzustellen.<\/p>\n<p>In einem weiteren Beitrag mit dem Titel <b>Datum einstellen mit Klasse <\/b>(<b>www.access-im-unternehmen.de\/1591<\/b>) zeigen wir, wie die hier vorgestellte L&ouml;sung in ein Klassenmodul &uuml;bertragen und mit wenigen Codezeilen beliebigen Datums-Textfeldern hinzugef&uuml;gt werden kann.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DatumSchnellPerCursorEinstellen.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/7E7D7604-0AB7-40C0-A2B3-CF147BFC686A\/aiu_1590.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Eingabe von Datumsangaben ist erstens manchmal unkomfortabel und zweitens passiert es oft, dass Benutzer das Datum im falschen Format eingeben. Dem wollen wir mit der L&ouml;sung aus diesem Beitrag vorbeugen, indem wir die Eingabe vollst&auml;ndig &uuml;ber die Tasten &#8222;Nach oben&#8220;, &#8222;Nach unten&#8220;, &#8222;Nach rechts&#8220; und &#8222;Nach links&#8220; erm&ouml;glichen. Sobald der Benutzer den Fokus auf ein Datumsfeld setzt, wird das aktuelle Datum eingesetzt, sofern das Feld noch leer ist. Dann kann er mit &#8222;Nach links&#8220; und &#8222;Nach rechts&#8220; zwischen den einzelnen Datumsbestandteilen Tag, Monat und Jahr wechseln und mit den Tasten &#8222;Nach oben&#8220; und &#8222;Nach unten&#8220; stellt er schrittweise den gew&uuml;nschten Wert ein. Die Funktionalit&auml;t bilden wir anschlie&szlig;end auch noch in einer Klasse ab, sodass die Funktion einfach mit zwei Zeilen Code zu einem Datums-Textfeld hinzugef&uuml;gt werden kann.<\/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":[66022026,662026,44000052,44000027],"tags":[],"class_list":["post-55001590","post","type-post","status-publish","format-standard","hentry","category-66022026","category-662026","category-Formulare_und_Steuerelemente","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Datum schnell per Tastatur einstellen - 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\/Datum_schnell_per_Tastatur_einstellen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datum schnell per Tastatur einstellen\" \/>\n<meta property=\"og:description\" content=\"Die Eingabe von Datumsangaben ist erstens manchmal unkomfortabel und zweitens passiert es oft, dass Benutzer das Datum im falschen Format eingeben. Dem wollen wir mit der L&ouml;sung aus diesem Beitrag vorbeugen, indem wir die Eingabe vollst&auml;ndig &uuml;ber die Tasten &quot;Nach oben&quot;, &quot;Nach unten&quot;, &quot;Nach rechts&quot; und &quot;Nach links&quot; erm&ouml;glichen. Sobald der Benutzer den Fokus auf ein Datumsfeld setzt, wird das aktuelle Datum eingesetzt, sofern das Feld noch leer ist. Dann kann er mit &quot;Nach links&quot; und &quot;Nach rechts&quot; zwischen den einzelnen Datumsbestandteilen Tag, Monat und Jahr wechseln und mit den Tasten &quot;Nach oben&quot; und &quot;Nach unten&quot; stellt er schrittweise den gew&uuml;nschten Wert ein. Die Funktionalit&auml;t bilden wir anschlie&szlig;end auch noch in einer Klasse ab, sodass die Funktion einfach mit zwei Zeilen Code zu einem Datums-Textfeld hinzugef&uuml;gt werden kann.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-05T20:08:34+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/f365ba09647940858df9b17c19968ee8\" \/>\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=\"16\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Datum schnell per Tastatur einstellen\",\"datePublished\":\"2026-03-05T20:08:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/\"},\"wordCount\":2667,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/f365ba09647940858df9b17c19968ee8\",\"articleSection\":[\"2\\\/2026\",\"2026\",\"Formulare und Steuerelemente\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/\",\"name\":\"Datum schnell per Tastatur einstellen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/f365ba09647940858df9b17c19968ee8\",\"datePublished\":\"2026-03-05T20:08:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/f365ba09647940858df9b17c19968ee8\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/f365ba09647940858df9b17c19968ee8\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datum_schnell_per_Tastatur_einstellen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Datum schnell per Tastatur einstellen\"}]},{\"@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":"Datum schnell per Tastatur einstellen - 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\/Datum_schnell_per_Tastatur_einstellen\/","og_locale":"de_DE","og_type":"article","og_title":"Datum schnell per Tastatur einstellen","og_description":"Die Eingabe von Datumsangaben ist erstens manchmal unkomfortabel und zweitens passiert es oft, dass Benutzer das Datum im falschen Format eingeben. Dem wollen wir mit der L&ouml;sung aus diesem Beitrag vorbeugen, indem wir die Eingabe vollst&auml;ndig &uuml;ber die Tasten \"Nach oben\", \"Nach unten\", \"Nach rechts\" und \"Nach links\" erm&ouml;glichen. Sobald der Benutzer den Fokus auf ein Datumsfeld setzt, wird das aktuelle Datum eingesetzt, sofern das Feld noch leer ist. Dann kann er mit \"Nach links\" und \"Nach rechts\" zwischen den einzelnen Datumsbestandteilen Tag, Monat und Jahr wechseln und mit den Tasten \"Nach oben\" und \"Nach unten\" stellt er schrittweise den gew&uuml;nschten Wert ein. Die Funktionalit&auml;t bilden wir anschlie&szlig;end auch noch in einer Klasse ab, sodass die Funktion einfach mit zwei Zeilen Code zu einem Datums-Textfeld hinzugef&uuml;gt werden kann.","og_url":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/","og_site_name":"Access im Unternehmen","article_published_time":"2026-03-05T20:08:34+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/f365ba09647940858df9b17c19968ee8","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"16\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Datum schnell per Tastatur einstellen","datePublished":"2026-03-05T20:08:34+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/"},"wordCount":2667,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/f365ba09647940858df9b17c19968ee8","articleSection":["2\/2026","2026","Formulare und Steuerelemente","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/","url":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/","name":"Datum schnell per Tastatur einstellen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/f365ba09647940858df9b17c19968ee8","datePublished":"2026-03-05T20:08:34+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/f365ba09647940858df9b17c19968ee8","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/f365ba09647940858df9b17c19968ee8"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Datum_schnell_per_Tastatur_einstellen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Datum schnell per Tastatur einstellen"}]},{"@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\/55001590","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=55001590"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001590\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001590"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001590"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}