Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
116to120
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
116to120
116to120
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

nochmals:Datumsformat in msg-Box

nochmals:Datumsformat in msg-Box
07.05.2002 09:46:22
Mike
Hallo zusammen,
ich will es nochmals versuchen, ob jemand eine Lösung weiß.
Ich habe folgendes Problem:
Wenn ich in meiner msg-Box in die Eingabezeile das Datum im Format => "TT.MM.JJJJ" eintrage, wird es nach Bestätigung auch so in eine festgelegte Zelle übertragen. Die Zelle ist im Format "Datum" formatiert. So weit so gut.
Wenn ich jedoch z.B. das Datum in der in Excel üblichen Kurzform "T.M (ohne Punkt)" eingebe - z.B. "5.1" - wird "05.01.1900" angezeigt. In der Bearbeitungszeile steht noch mehr => "05.01.1900 02:24:00". Kann man das beeinflussen, oder muss das Datum immer vollständig eingegeben werden?

Mein Makro lautet:

Gruß
Mike

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

Betreff
Datum
Anwender
Anzeige
Re: nochmals:Datumsformat in msg-Box
07.05.2002 09:57:08
Jürgen
ohne es getestet zu haben:

wandle Deine Datumsvariable von String in Date um vor Übertragung in eine Zelle, also etwa so:

Zelle.Value = CDate(strDatum)

Gruss Jürgen

Re: nochmals:Datumsformat in msg-Box
07.05.2002 10:06:57
Mike
Hallo Jürgen,
leider bin ich in VBA noch nicht so weit, das zu verstehen. Könntest due es vielleicht in meinem Code so abändern, wie du meinst? Danke.

Gruß
Mike

Re: nochmals:Datumsformat in msg-Box
07.05.2002 10:56:31
Jürgen
ich weiss leider nicht wie der Eintrag der Variablen DATUMSABFRAGE in die Zelle erfolgt, aber wenn du die vorletzte Zeile der Funktion

DATUMSABFRAGE = strDatum_neu

durch

DATUMSABFRAGE = Format(CDate(strDatum_neu), "dd.mm.yyyy")

ersetzt, sollte es so klappen, wie Du es willst!


Gruss Jürgen

Anzeige
Re: nochmals:Datumsformat in msg-Box
07.05.2002 20:45:08
Mike
Hallo Jürgen,
bin erst jetzt heimgekommen und hab's gleich ausprobiert.
Funktioniert. Danke.
Einziger Wermutstropfen => Wenn ich ein falsches Datum eingebe, z.B. "31.4" , dann wird das Datum "01.04.1931" eingetragen, oder bei "29.2" => "01.02.2029". Wie du im bestehenden Code siehst, wird dort bei Fehleingabe eine msg-Box gestartet, die auf den Fehler hinweist und einen Eintrag unterbindet.
Kann man das in der Änderung auch zum Laufen bringen?

Gruß
Mike

Re: nochmals:Datumsformat in msg-Box
08.05.2002 00:05:10
Jürgen
"Kann man das in der Änderung auch zum Laufen bringen?"

Da die Fehlerabfrage sich im VBA-Code vor der Änderung befindet wird sie durch die Änderung nicht beeinflusst; sie 'greift' halt nur selten, z.B. bei Buchstabeneingabe!

Eine Möglichkeit utopische Datumseingaben abzufangen ist z.B. im Tabellenblatt die Zelle mit
Daten -> Gültigkeit -> Einstellungen -> zulassen -> Datum
zu formatieren.
Zusätzlich vielleicht noch im VBA-Code die Zeichenlänge (max. 10 Zeichen), was vor dem ersten Punkt steht (sollte < 32 sein), zwischen den Punkten (>13) ...

Der Code ist zwar jetzt ein wenig länger, aber so klappt es bei mir ganz gut!

Ersetze den alten VBA-Code nach der Zeile: If strDatum_neu = "" Then Exit Do
Mit folgendem

Dim TT$, MM$, JJJJ$
On Error Resume Next
TT = Left(strDatum_neu, InStr(strDatum_neu, ".") - 1)
MM = Left(Mid(strDatum_neu, Len(TT) + 2), InStr(Mid(strDatum_neu, Len(TT) + 2), ".") - 1)
JJJJ = Mid(Mid(strDatum_neu, Len(TT) + 2), Len(MM) + 2)

If IsDate(strDatum_neu) = False Or _
Len(strDatum_neu) > 10 Or Len(TT) > 2 Or Len(MM) > 2 Or Len(JJJJ) > 4 Or _
CInt(TT) > 31 Or CInt(MM) > 12 Then
MsgBox "Fehler bei der Eingabe des Datums!", _
vbExclamation, "Hinweis"
strDatum_neu = ""
End If
Loop
DATUMSABFRAGE = Format(CDate(strDatum_neu), "dd.mm.yyyy")
End Function

Gruss Jürgen


PS: was muss ich nochmal am Anfang und am Ende des VBA-Code schreiben damit er hier Forum richtig dargestellt wird?
~start
~ende

Anzeige
Re: nochmals:Datumsformat in msg-Box
08.05.2002 09:26:52
Mike
Hallo Jürgen,
funktioniert bei mir leider nicht.
Ich muss das Datum grundsätzlich im Formt "T(TT).M(MM).J" eingeben. Die Kurzform "T(TT).M(MM)" funktioniert nicht. Es kommt die Meldung => "Fehler bei der Eingabe des Datums".
Gebe ich dann zum Testen "29.2.2" ein, wird "02.02.2029" angezeigt.
Bei Eingabe von "31.4.2" => "02.04.1931".
Probier's mal aus.

P.S.: Für die richtige Darstellung des Codes gib am Anfang bzw. am Ende ein => ~ begin ~ und   ~ end ~ (ohne Leerzeile)
Beschrieben ist dies auch unter "Features".

Gruß
Mike



Anzeige
Teste doch nun mal folgendes
08.05.2002 10:50:44
Jürgen
jetzt noch ein wenig ausführlicher. Bin mal gespannt, ob Dir noch ein Fehler auffällt :-)
Ist mir übrigens ein Rätsel wieso Excel aus '29.2.2' '02.02.2029' macht !)


Re: Teste doch nun mal folgendes
08.05.2002 11:24:26
Mike
Hallo Jürgen,
du hast es fast.
Jetzt wird zwar das in Kurzform eingegebene Datum "richtig" eingetragen, aber ein falsches leider auch.
Wenn ich also "29.2" eingebe wird "29.02.2002" und bei "31.4" wird "31.04.2002" eingetragen. Aber diese Datums gibt es nicht.
Es müsste daher die Meldung kommen: "Fehler bei der Eingabe des Datums" und der Eintrag unterbunden werden.
Wenn du das noch hinbekämst wäre das super.

Gruß
Mike

P.S.: Muss jetzt leider weg und komme erst heute nacht wieder zurück.


Anzeige
nächster Versuch :-)
08.05.2002 18:18:12
Jürgen
vielleicht klappts ja diesmal:

Gruss Jürgen

Re: nächster Versuch :-)
08.05.2002 23:33:01
Mike
Hi Jürgen,
phantastisch. Es funktioniert. Vielen Dank für deine tolle Hilfe.

Gruß
Mike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige