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

Datumseingabe vereinfachen

Datumseingabe vereinfachen
06.07.2008 09:48:57
Perschel
Hallo Profis,
ich möchte gern die Datumseingabe vereinfachen.
Es wäre viel einfacher wenn man statt 06.07.08 nur 060708 eingeben müßte und ein Makro dann beim Verlassen der Zelle diese Eingabe in ein gültiges Datum konvertiert.
Ich kenne mich mit VBA von Word her ganz gut aus, aber in Exel bin ich ziemlicher Anfänger und habe es deshalb noch nicht hinbekommen !
Kann mir jemand weiterhelfen ?
Gruß und vielen Dank schon mal
Thomas !

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumseingabe vereinfachen
06.07.2008 10:30:14
Tino
Hallo,
kommt in das entsprechende Tabellenblatt als Code.
Wirkungsbereich habe ich im Beispiel auf die Spalte A gesetzt.
Mögliche Eingabeformate für 08.05.2008
80508
080508
08052008
Also der Monat muss immer zweistellig sein.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MekZellSt As String
Target.NumberFormat = "General"
If Intersect(Target, Range("A:A")) Is Nothing Or (InStr(Target, ".") > 0) Then Exit Sub
Application.EnableEvents = False
If Len(Target) = 5 Then
Target = _
CDate(Format(CDate(Mid(Target, 1, 1) & "." & _
Mid(Target, 2, 2) & "." & _
Mid(Target, 4, 2)), "dd.mm.yyyy"))
ElseIf Len(Target) = 6 Then
Target = _
CDate(Format(CDate(Mid(Target, 1, 2) & "." & _
Mid(Target, 3, 2) & "." & _
Mid(Target, 5, 2)), "dd.mm.yyyy"))
ElseIf Len(Target) = 7 Then
Target = _
CDate(Format(CDate(Mid(Target, 1, 1) & "." & _
Mid(Target, 2, 2) & "." & _
Mid(Target, 4, 4)), "dd.mm.yyyy"))
ElseIf Len(Target) = 8 Then
Target = _
CDate(Format(CDate(Mid(Target, 1, 2) & "." & _
Mid(Target, 3, 2) & "." & _
Mid(Target, 5, 4)), "dd.mm.yyyy"))
End If
Application.EnableEvents = True
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Datumseingabe vereinfachen
06.07.2008 13:51:00
Perschel
Hallo Hajo, Hallo Tino !
danke Eure Beiträge haben mir sehr weitergeholfen !
Konnte aus euren beiden Lösungen mein Problem lösen !
Vielen Dank !

AW: Datumseingabe vereinfachen
06.07.2008 22:59:00
Erich
Hallo Thomas,
auch wenn das Problem schon gelöst ist - hier noch zwei Varianten:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) ' Target einzellig
Dim strT As String
If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub
If IsEmpty(Target) Or Not IsNumeric(Target) Then Exit Sub
If InStr(Target, ".") > 0 Then Exit Sub
Target.NumberFormat = "General"
Application.EnableEvents = False
Select Case Len(Target)
Case 5, 6: Target = CDate(Format(Target, "00/00/00"))
Case 7, 8: Target = CDate(Format(Target, "00/00/0000"))
End Select
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) ' Target auch mehrzellig
Dim rng As Range, strT As String
If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rng In Intersect(Target, Columns(1))
If IsEmpty(rng) Or Not IsNumeric(rng) Then Exit Sub
If InStr(rng, ".") > 0 Then Exit Sub
rng.NumberFormat = "General"
Select Case Len(rng)
Case 5, 6: rng = CDate(Format(rng, "00/00/00"))
Case 7, 8: rng = CDate(Format(rng, "00/00/0000"))
End Select
Next rng
Application.EnableEvents = True
End Sub

(Zum Testen immer eine Routine umbenennen.)
Die zweite Routine verträgt auch Änderungen in mehreren Zellen gleichzeitig (z. B. per Kopieren).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Datumseingabe vereinfachen
08.07.2008 02:54:00
Perschel
Hallo Erich,
interressant, dass es auch eine Lösung gibt, ohne dass man künstlich Punkte einfügen muss - es funktioniert jedenfalls.
Gruß und vielen Dank
Thomas !

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige