Eingabe in Datum wandeln

15/02/2008 - 15:22 von Wolfgang Behrendt | Report spam
Hallo,

wàlze da mal wieder ein Problem. :-)

Ich habe eine Tabelle, da müssen eigentlich viele Datensàtze manuell
eingetragen werden. Ich möchte das ganze etwas vereinfachen und
erreichen, dass man in der Datumsspalte einfach das Datum in der Form
ddmmyy eingeben kann und mittels Makro wird das in ein richiges Datum
im Format dd.mm.yyyy umgewandelt. Gleiches soll für Zeiteintragungen
gelten, hier Eingabe immer 4-stellig, ohne Trenner.

Am Beispiel des Datums:

Ich habe die Spalte formatiert mit dd.mm.yyyy (angezeigt wird
*14.03.2001, wenn ich zur Kontrolle auf Zellen formatieren gehe)

Mit dem Makroinhalt:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B5:B500")) Is Nothing Then Exit Sub
If Target.Cells.Count <> 1 Then GoTo Exit Sub
Dim DEingabe
Application.EnableEvents = False
DEingabe = Target.Value
MsgBox DEingabe
Application.EnableEvents = True

will ich zunàchst mal ermitteln, was mir als eingegebener Wert zum
Weiterverarbeiten angezeigt wird. Mit dem Umwandeln komme ich dann
natürlich allein weiter.

In DEingabe ist "20.01.2752" enthalten, genau wie auch beim Verlassen
der Zelle angezeigt wird, wenn z. B. "311207" eingegeben wird.
Wenn ich als Zellformat Zahl (ohne Nachkommastellen) wàhle, wird
korrekt "311207" in der Zelle angezeigt und aus ausgelesen. Nach dem
Zurückschreiben von umgeandeltem "31.12.2007" steht in der Zelle
daneben auch der Korrekte Wochentag dazu, obwohl die Zelle weiter das
Zahlenformat besitzt.

Man könnte das jetzt so lassen, wenn man sicherstellen könnte, dass
sich alle Beteiligten an die Eingabekonvention ddmmyy halten.
Wenn jetzt dort aber "31.12.07" eingegeben wird, also mit Punkten
dazwischen, wird beim Verlassen der Zelle daraus plötzlich
"39.44.9447". Dann macht mein Makro natürlich nicht mehr, was es soll.

Wo liegt mein Denkfehler?

Gruß, Wolfgang
 

Lesen sie die antworten

#1 Lorenz Hölscher
15/02/2008 - 15:39 | Warnen spam
Hallo Wolfgang,

der Denkfehler liegt in dem, was Excel schon vor Deinem Makro aus der
Eingabe gemacht hat:
- gibst Du die ZAHL 311.207 (auch ohne Tausenderpunkt) ein, steht
diese drin
- gibst Du das DATUM 31.12.07 ein, ist die damit gespeicherte ZAHL
39.447, nàmlich die Anzahl der Tage seit 1.1.1900

Was immer Dein Makro anschließend damit anstellt, jedenfalls würde das
einen Teil des Ergebnisses "39.44.9447" erklàren, weil Du
offensichtlich einige Ziffern daraus benutzt.

Bloß: ich sehe nicht, daß Dein Makro überhaupt etwas macht außer einer
MsgBox und vor allem ist es meiner Ansicht nach fehlerhaft.
- "End Sub" fehlt, das ist vermutlich beim Kopieren nur nicht
rübergekommen
- "...Then GoTo Exit Sub" ist meiner Ansicht nach nicht zulàssig
- wo schreibst Du eigentlich in die Zelle?

tschö, Lorenz
http://www.cls-software.de/cls_soft...elVBA.aspx

Ähnliche fragen