Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gibt es eine Funktion zur Datumsprüfung?

Forumthread: Gibt es eine Funktion zur Datumsprüfung?

Gibt es eine Funktion zur Datumsprüfung?
08.10.2003 10:57:08
Daniela
Hallo,

ich benötige eine Funktion, die Datumseingaben auf Plausibilität überprüft, so dass man nicht den 35.02.03 oder 01.13.03 eingeben kann...

Bisher wird bei obiger ersterer Eingabe das hier: 02.03.35 und genau sowas will ich vermeiden...

Daniela
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gibt es eine Funktion zur Datumsprüfung?
08.10.2003 11:11:26
Karl-Otto Reimann
Hallo Daniela
Daten/Gültigkeit/Einstellungen/Zulassen/Datum
mfG KO
AW: Gibt es eine Funktion zur Datumsprüfung?
08.10.2003 11:13:06
geri
Hallo Daniela

gehe zu DATEN/ Gültigkeit und lasse nur Datum in Zelle zu
denn Bereich kannst du definieren

gruss geri
AW: Gibt es eine Funktion zur Datumsprüfung?
08.10.2003 11:13:06
Harald Kapp
Hallo Daniela,
z.B. so:

Sub test()
Dim x As String
Dim y As Date
x = InputBox("Datum ")
If IsDate(x) Then
y = CDate(x)
MsgBox y
Else
MsgBox "kein gültiges Datum"
End If
End Sub


Gruß Harald
Anzeige
AW: Gibt es eine Funktion zur Datumsprüfung?
08.10.2003 12:32:11
Daniela
Hallo Harald,

ich hab es mit Deiner Idee versucht, aber ich habe immer das gleiche Problem:

Wenn der Benutzer aus versehen z.B. 34.02.03 eingiebt, dann wird das Datum trotzdem akzeptiert und so umgedreht, dass 34 die Jahreszahl ist, also -> 03.02.34
Wird also nicht als falsch erkannt...
Wie kann ich denn das verhindern?

Daniela
Anzeige
Nimm das Kalender-Steuerelement
08.10.2003 14:44:15
Harald Kapp
Hallo Daniela,
außer einer recht aufwendigen Plausibilitätsprüfung fällt mir als einfachstes ein, statt einer Textbox das Kalender-Steuerelement auf der UserForm zu verwenden.

dazu musst Du ggfls. beim Bearbeiten der UserForm mit Extras-Yweitere Steuerelemente erst das "Kalender Steuerelement" aktivieren. Dann erhältst Du in der Werkzeugbox ein zusätzliches Steuerlement, eben den Kalender.

Nach Einbauen in die User Form kanns Du daraus das Datumwie folgt zurück geben:

Hauptmodul:

Option Explicit
Public I_jahr As Integer
Public I_monat As Integer
Public I_tag As Integer

Sub test()
Dim y As Date

UserForm1.Show
y = DateSerial(I_jahr, I_monat, I_tag)
MsgBox y

End Sub


Im Modul der UserForm:


Private Sub CommandButton1_Click()
I_tag = CInt(Calendar1.Day)
I_monat = CInt(Calendar1.Month)
I_jahr = CInt(Calendar1.Year)
Unload Me
End Sub


Gruß Harald
Anzeige
AW: Nimm das Kalender-Steuerelement
08.10.2003 16:52:20
Daniela
Wow Harald!

Du hast mir heute sooooooo arg geholfen, das ist echt der Hammer!
Das hätte ich echt nie alleine hinbekommen - ein riesiges Dankeschön!

Hab jetzt einfach zwei solche Kalender nebeneinander um die Auswahl von einem Start- und einem Endetermin zu ermöglichen - und es klappt sogar!

Ich habe noch Fragen, die Du aber gern ignorieren kannst, wenn Du von mir die Schnauze voll hast... ich könnte es verstehen ;-))

1.
Wenn ich nur das Jahr und den Monat auswähle, aber keinen Tag, dann wird mir immer der 30.11.1999 angezeigt?! Ich hab ein bischen nach einer Default-Einstellung gesucht, aber nix gefunden. Wo find ich die denn?

2.
Das mit dem Option Explicit hab ich nicht verstanden, ich hab's einfach genauso gemacht, wie in Deinem Beispiel, aber den Sinn hab ich nicht kapiert.
Warum werden die Variablen im Modulblatt deklariert und im Formular und in dem Tabellenblatt, wo das Formular erscheinen soll Option Explicit eingefügt?

3.
Ich habe noch einen "Abbrechen"-Button, der macht das hier:

Private Sub abbrechen_Click()
Unload userform
End Sub


Wenn ich nach Aufruf des Formulars auf diesen Button klicke, dann bin ich mir nicht sicher, ob er tatsächlich die Inhalte des Formulars löscht, weil ich danach in der Prozedur die gewählten Daten anzeigen lasse und er mir immer die zuletzt gewählten Daten anzeigt?! Und das versteh ich nicht, weil ich doch "unload userform" sage...

So, das wär's dann glaub ich...
W.g. Deine Informationen waren sehr wertvoll für mich, und ich will auch nicht Deinen ganzen Tag in Anspruch nehmen, also nur antworten, wenn Du Lust dazu hast :-)

Daniela
Anzeige
spät aber...
09.10.2003 12:48:53
Harald Kapp
Hallo Daniela,
komme leider erst heute zum Antworten:

1) Das verstehe ich nicht. Bei mir ist automatisch der heutige Tag aktiviert. Ich erhalte also bei Click nur auf O.K. das heutige Datum zurück.
Mein Tip wäre, das Datum zu prüfen und falls der 30.11.1999 zurückgegeben wird ersatzweise einfach das aktuelle Datum "Date()" zu verwenden.

2)Die Option Explicit hat nix mit der Public-Definition der Variablen zu tun. Sie hilft lediglich Schreibfehler zu verhindern. Basic - und eben auch Visual Basic - erlaubt nämlich normalerweise, eine Variable automatisch bei der ersten Benutzung zu definieren, ohne dass sie vorher mit ihrem Typ bekannt war. Wenn man nun oben schreibt

DIM Datum as Date

unten sich aber vertippt und schreibt

Datumm = ....

dann sind Datum und Datumm zwei verschiedene Variablen. Das sieht man oft schwer und wundert sich über Fehler im Programmablauf.

Wenn man aber Option Explicit vorher aktiviert hat, dann meckert VBA darüber, dass Datumm nicht bekannt ist. Das findet man und korrigiert leicht den Schreibfehler.
Der Zweite Teil der Frage:
Man definiert eine Public Variable nur ein Mal, nämlich am besten in dem Modul, wo die Haupt Makro-Sub steht. Nach "Public xyz as Integer" ist diese Variable nun golbal bekannt, auch in anderen Modulen. Man kann also von überall her darauf schreiben und daraus lesen. Das birgt zwar ganz eigene Gefahren, geht aber manchmal nicht anders. Hier ist es so, dass die lokalen Variablen im Modul der UserForm nach dem Unload nicht mehr zur Verfügung stehen. Die aufrufende Prozedur könnte also den Rückgabewert der UserForm nicht auswerten.

3)Beantwortet sich aus 2). Die Werte der Public definierten Variablen werden nur überschrieben, wenn dies explizit z.B. durch Drücken des O.K. Knopfes erledigt wird. Wenn Du wie von Dir beschrieben abbrichst, erhältst Du natürlich hinterher die zuletzt gespeicherten Werte. Wenn Du möchtest, dass bei Abbruch andere (default-) Werte im Datum stehen, dann musst Du das auch explizit setzen, so wie beim OK-Knopf.
Alternativ könntest Du eine weitere Public Variable definieren:

Option Explicit
Public I_jahr As Integer
Public I_monat As Integer
Public I_tag As Integer
Public B_Abbruch as Boolean

Sub test()
Dim y As Date

B_Abbruch = False
UserForm1.Show
if B_Abbruch = True Then
msgbox "Eingabe abgebrochen"
Else y = DateSerial(I_jahr, I_monat, I_tag)
MsgBox y
End If
End Sub


Im Modul der UserForm:

Private Sub abbrechen_Click()
B_Abbruch = True
Unload userform
End Sub


Gruß Harald
Anzeige
AW: Gibt es eine Funktion zur Datumsprüfung?
08.10.2003 11:15:17
Nico D
Hallo Daniela,

ich denke mal du brauchst keinen VBA.

Versuchs mal mit einer Gültigkeitsregel über DATEN/ DATUM/ UNGLEICH oder DATEN/ GANZE ZAHL /UNGLEICH.

Nico D
AW: Gibt es eine Funktion zur Datumsprüfung?
08.10.2003 11:29:04
Galenzo
mein Beitrag: =WENN(ISTZAHL(A1);"ja";"nö")
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Datumsprüfung in Excel: Praktische Lösungen und Tipps


Schritt-für-Schritt-Anleitung

Um in Excel eine Datumsprüfung durchzuführen, kannst du die Datenvalidierung nutzen. Hier ist eine einfache Anleitung:

  1. Markiere die Zelle oder den Bereich, in dem die Datumsprüfung erfolgen soll.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle im Dropdown-Menü unter "Zulassen" die Option Datum aus.
  4. Definiere die Bedingungen für die Datumsprüfung, z.B. zwischen zwei bestimmten Daten oder nur zukünftige Daten.
  5. Klicke auf OK, um die Einstellungen zu speichern.

Diese Methode sorgt dafür, dass nur gültige Datumsangaben in die ausgewählten Zellen eingegeben werden können, und hilft dir, die Plausibilitätsprüfung in Excel effektiv durchzuführen.


Häufige Fehler und Lösungen

Ein häufiger Fehler bei der Datumsprüfung in Excel ist, dass falsche Datumsformate akzeptiert werden. Hier sind einige Lösungen:

  • Problem: Eingabe von 34.02.03 wird akzeptiert.

    • Lösung: Stelle sicher, dass die Datenvalidierung korrekt konfiguriert ist. Überprüfe die Auswahl „Datum“ und stelle sicher, dass das Format mit den regionalen Einstellungen übereinstimmt.
  • Problem: Es wird immer der 30.11.1999 angezeigt, wenn nur Jahr und Monat ausgewählt werden.

    • Lösung: Setze in deinem VBA-Code eine Prüfung ein, um das aktuelle Datum zurückzugeben, falls keine gültige Eingabe erfolgt.

Alternative Methoden

Neben der Datenvalidierung gibt es verschiedene Ansätze, um ein Excel-Datum zu prüfen:

  1. VBA-Lösung: Nutze VBA, um eine Eingabemaske zu erstellen, die das Datum überprüft. Hier ein Beispielcode:

    Sub test()
       Dim x As String
       Dim y As Date
       x = InputBox("Datum ")
       If IsDate(x) Then
           y = CDate(x)
           MsgBox y
       Else
           MsgBox "kein gültiges Datum"
       End If
    End Sub
  2. Kalender-Steuerelement: Verwende das Kalender-Steuerelement in einer UserForm, um Benutzern die Auswahl eines Datums zu erleichtern und Eingabefehler zu minimieren.


Praktische Beispiele

Hier sind einige Beispiele für die Anwendung der Datumsprüfung in Excel:

  • Eingabefeld für Start- und Enddatum: Erstelle zwei Kalender-Steuerelemente, um die Auswahl von Start- und Endterminen zu ermöglichen. So kannst du sicherstellen, dass der Endtermin nach dem Starttermin liegt.

  • Gültigkeitsprüfung: Definiere Regeln, die sicherstellen, dass nur Daten im Jahr 2023 oder später eingegeben werden können, indem du die Gültigkeitsregel entsprechend anpasst.


Tipps für Profis

  • Aktiviere Option Explicit am Anfang deiner VBA-Module. Dies hilft, Schreibfehler bei der Variablendeklaration zu vermeiden und macht deinen Code robuster.

  • Verwende Public Variablen für den Austausch von Daten zwischen verschiedenen Modulen in deinem VBA-Projekt.

  • Implementiere Fehlerbehandlungen, um die Benutzerfreundlichkeit zu verbessern. Informiere die Nutzer über falsche Eingaben mit klaren und verständlichen Fehlermeldungen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur gültige Datumsangaben eingegeben werden? Verwende die Datenvalidierung in Excel und setze die Zulassung auf „Datum“. So wird automatisch überprüft, ob die Eingabe ein gültiges Datum ist.

2. Was ist der Vorteil von Option Explicit in VBA? Option Explicit zwingt dich, alle Variablen zu deklarieren, bevor du sie verwendest. Dies hilft, Schreibfehler und damit verbundene Fehlermeldungen zu vermeiden.

3. Wie kann ich ein Standarddatum festlegen, wenn kein Tag ausgewählt wird? Füge eine Prüfung in deinen Code ein, die das aktuelle Datum zurückgibt, wenn kein gültiges Datum ausgewählt wird.

4. Was kann ich tun, wenn die Datumsüberprüfung nicht funktioniert? Überprüfe die regionalen Einstellungen deines Excel und stelle sicher, dass das Datumsformat mit den Eingaben übereinstimmt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige