Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
320to324
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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ö")

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige