Das Archiv des Excel-Forums

Gibt es eine Funktion zur Datumsprüfung?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Gibt es eine Funktion zur Datumsprüfung?
von: Daniela

Geschrieben am: 08.10.2003 10:57:08

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
Bild


Betrifft: AW: Gibt es eine Funktion zur Datumsprüfung?
von: Karl-Otto Reimann
Geschrieben am: 08.10.2003 11:11:26

Hallo Daniela
Daten/Gültigkeit/Einstellungen/Zulassen/Datum
mfG KO


Bild


Betrifft: AW: Gibt es eine Funktion zur Datumsprüfung?
von: geri
Geschrieben am: 08.10.2003 11:13:06

Hallo Daniela

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

gruss geri


Bild


Betrifft: AW: Gibt es eine Funktion zur Datumsprüfung?
von: Harald Kapp
Geschrieben am: 08.10.2003 11:13:06

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


Bild


Betrifft: AW: Gibt es eine Funktion zur Datumsprüfung?
von: Daniela
Geschrieben am: 08.10.2003 12:32:11

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


Bild


Betrifft: Nimm das Kalender-Steuerelement
von: Harald Kapp
Geschrieben am: 08.10.2003 14:44:15

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


Bild


Betrifft: wg. Beispiel siehe unten beim Public Thread
von: Harald Kapp
Geschrieben am: 08.10.2003 14:52:34

https://www.herber.de/bbs/user/1331.xls


Bild


Betrifft: AW: Nimm das Kalender-Steuerelement
von: Daniela
Geschrieben am: 08.10.2003 16:52:20

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


Bild


Betrifft: spät aber...
von: Harald Kapp
Geschrieben am: 09.10.2003 12:48:53

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


Bild


Betrifft: AW: Gibt es eine Funktion zur Datumsprüfung?
von: Nico D
Geschrieben am: 08.10.2003 11:15:17

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


Bild


Betrifft: AW: Gibt es eine Funktion zur Datumsprüfung?
von: Galenzo
Geschrieben am: 08.10.2003 11:29:04

mein Beitrag: =WENN(ISTZAHL(A1);"ja";"nö")


 Bild

Excel-Beispiele zum Thema " Gibt es eine Funktion zur Datumsprüfung?"

Funktion ANZAHL2 ohne ausgeblendete Spalten download Mit der Indirekt-Funktion auf geschlossene Arbeitsmappe zugreifen download
Benutzerdefinierte SVERWEIS-Funktion über mehrere Bereiche download Alle Prozeduren und Funktionen auflisten download
In Funktionskategorie einordnen download Ausgabe einer benutzerdefinierten Funktion in Matrixformel download
Benutzerdefinierte Funktion durch Code erstellen und löschen download Ermittlung von Entfernungen über benutzerdefinierte Funktion download
Handhabung von Arrays in benutzerdefininierten Funktionen download Arbeitsmappen-Titel über benutzerdefinierte Funktion download
Eigene Funktionskategorien erstellen download Auf- und absteigend sortieren ohne Sortierfunktion download
Handhabung der Datenbankfunktion DBSUMME() download Alle Funktionstasten aus- und einschalten download
Anzahl nach 2 Kriterien ermitteln mit DB-Funktion und MatrixFormel download Zweidimensionale Matrix mit der SVERWEIS-Funktion durchsuchen download
SUMMEWENN-Funktion über mehrere Tabellenblätter download Integragtion von SVERWEIS in eine Namens-Funktion download
Benutzerdefiniere Funktion einer Schaltfläche zuweisen download Nachbildung der Funktion NETTOARBEITSTAGE aus dem Analyse-Pack download
Alternative zur DEC2BIN-Funktion ohne Begrenzung auf 512 download NETTOARBEITSTAGE-Funktion sprachunabhängig gestalten download
Über benutzerdefinierte Funktion Filterkriterium anzeigen download Im Assistenten anzuzeigende Funktion festlegen download
Variablen auf mehrere Arten in Funktionen integrieren download Benutzerdefinierte Funktion als Matrixformel download
Matrixfunktion über VBA eintragen, auslesen und löschen download Verlauf prognostizieren (über Funktion SCHÄTZER) download
Funktionstaste F11 beim Öffnen ein- und beim Schließen aus download Beispiele zum Einsatz der ZÄHLENWENN-Funktion download
SVERWEIS-Funktion ohne Berücksichtigung leerer Zellen download ComboBox mit der Funktion des Autofilters download
Benutzerdefinierte Funktion zur Ermittlung hinterleger Kategorien download Eine Zusammenstellung von Matrix-Funktionen download
Der Einsatz der SVERWEIS-Funktion in einem Ausgabeblatt download Beispiele zum Einsatz der ZELLE-Funktion download
Beispiele für den Einsatz der Funktion SVERWEIS download