Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1548to1552
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
Inhaltsverzeichnis

nur Uhrzeit soll erlaubt sein

nur Uhrzeit soll erlaubt sein
29.03.2017 10:33:56
Edwin

Hallo,
ich will in einem Textfeld nur die Eingabe einer Uhrzeit zulassen.
Hierzu habe ich folgenden Code eingegeben.
With txtAbfahrt
If Not IsDate(.Value) Then
If .Value = "" Then Exit Sub
MsgBox "Bitte eine gültige Uhrzeit eingeben!"
Cancel = True
.SetFocus 'Markierung des Textfeldes
.SelStart = 0 'von Anfang
.SelLength = Len(.Text) 'bis Schluss
End If
End With
Code funktioniert, wenn ich "abc" eingebe, nicht aber "13.1"
Scheint wohl als Datum erkannt zu werden.
Wie soll ich meinen Code entsprechend abändern?
LG
Edwin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur Uhrzeit soll erlaubt sein
29.03.2017 10:52:55
Rainer
Hallo Edwin,
"13.1." wird vermutlich als 13.Januar 0:00 Uhr erkannt. das ist in Excel als Zahl formatiert eine "13".
"13,1" wird er ebenfalls als 13.Januar erkennen, die Uhrzeit ist dann aber 02:24Uhr.
Informiere dich doch mal genauer, wie Excel mit Datum und Zeit umgeht.
Grob: Tag 1 ist der 1.1.1900. Es gibt aber auch einen Tag 0. Das sind dann Uhrzeiten ohne Datum (0.Januar)
In welchen Format soll denn deine Zeit eingeben werden? z.B. "01:23:45"? Dann könntest du prüfen, ob deine Eingabe auch 8 Stellen hat, ansonsten den Fehler ausgeben.
Gruß,
Rainer
AW: nur Uhrzeit soll erlaubt sein
29.03.2017 10:52:59
Daniel
Hi
Datum und Uhrzeit sind für Excel das gleiche, nämlich eine Zahl.
die Ganzahlen stellen das Datum dar und die Nachkommastellen die Uhrzeit.
zur Prüfung musst du also die Eingabe in ein Datum wandeln und prüfen, ob der erzeugte Wert kleiner als 1 ist.
If CDbl(CDate(.Value)) >= 1 then
Msgbox "Bitte eine gültige Uhrzeit eingeben!"
Cancel = true
.. usw
End if
Gruß Daniel
Anzeige
AW: nur Uhrzeit soll erlaubt sein
29.03.2017 14:42:01
Edwin
Hallo,
jetzt klappt es.
With txtAbfahrt
If .Value = "" Then
Exit Sub
ElseIf Not IsDate(.Value) Then
MsgBox "Bitte eine gültige Uhrzeit eingeben!"
Cancel = True
.SetFocus 'Markierung des Textfeldes
.SelStart = 0 'von Anfang
.SelLength = Len(.Text) 'bis Schluss
ElseIf CDbl(CDate(.Value)) >= 1 Then
MsgBox "Bitte eine gültige Uhrzeit eingeben!"
Cancel = True
.SetFocus 'Markierung des Textfeldes
.SelStart = 0 'von Anfang
.SelLength = Len(.Text) 'bis Schluss
End If
End With
Was ich mit meinen VBA-Grundkenntnissen jetzt nicht verstehe:
Sollte ich
Not IsDate(.Value) OR CDbl(CDate(.Value)) >= 1
eingeben (um Code-Text zu sparen), dann bringt CDbl(CDate(.Value)) den Fehler, dass die Typen unverträglich sind.
LG
Edwin
Anzeige
AW: nur Uhrzeit soll erlaubt sein
30.03.2017 00:40:23
Daniel
Hi
Das CDate bringt einen Fehlerabbruch, wenn der Text nicht in ein Datum oder Uhrzeit wandelbar ist.
Daher muss die Prüfung mit IsDate immer vorher in einem eigenen If-Then erfolgen.
Gruß Daniel
AW: nur Uhrzeit soll erlaubt sein
30.03.2017 00:40:24
Daniel
Hi
Das CDate bringt einen Fehlerabbruch, wenn der Text nicht in ein Datum oder Uhrzeit wandelbar ist.
Daher muss die Prüfung mit IsDate immer vorher in einem eigenen If-Then erfolgen.
Gruß Daniel
gültige Uhrzeit
29.03.2017 11:01:28
RPP63
Moin!
Eine gültige Uhrzeit ist
If IsDate(.Value) And .Value < 1 Then Debug.Print "Ist Uhrzeit"
Gruß Ralf
Das kann man noch verschärfen ...
30.03.2017 17:21:41
lupo1
If IsDate(.Value) And .Value < 1 And <i>SIEHEUNTEN</i> Then Debug.Print "Ist Uhrzeit"
SIEHEUNTEN ist (ungetestet) eines der folgenden:
Abs(.Value - Int(.Value * 86400) / 86400) < 0.000001 'sekundengenau
Abs(.Value - Int(.Value * 1440) / 1440) < 0.000001 'minutengenau
Abs(.Value - Int(.Value * 96) / 96) < 0.000001 'viertelstundengenau
Abs(.Value - Int(.Value * 24) / 24) < 0.000001 'stundengenau
Die Zwischentöne Halbe Stunde, 10 Minuten oder 5 Sekunden bekommst Du allein hin.

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige