Microsoft Excel

Herbers Excel/VBA-Archiv

Datumseingabe vereinfachen

Betrifft: Datumseingabe vereinfachen von: Perschel
Geschrieben am: 06.07.2008 09:48:57

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 !

  

Betrifft: AW: Datumseingabe vereinfachen von: Hajo_Zi
Geschrieben am: 06.07.2008 10:04:12

Hallo Thomas,

Datumseingabe in Excel

GrußformelHomepage


  

Betrifft: AW: Datumseingabe vereinfachen von: Tino
Geschrieben am: 06.07.2008 10:30:14

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




  

Betrifft: AW: Datumseingabe vereinfachen von: Perschel
Geschrieben am: 06.07.2008 13:51:23

Hallo Hajo, Hallo Tino !

danke Eure Beiträge haben mir sehr weitergeholfen !
Konnte aus euren beiden Lösungen mein Problem lösen !

Vielen Dank !


  

Betrifft: AW: Datumseingabe vereinfachen von: Erich G.
Geschrieben am: 06.07.2008 22:59:18

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


  

Betrifft: AW: Datumseingabe vereinfachen von: Perschel
Geschrieben am: 08.07.2008 02:54:04

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 !


 

Beiträge aus den Excel-Beispielen zum Thema "Datumseingabe vereinfachen"