ich suche ein Makro, dass aus 141105 -> 14.11.2005 macht.
Meine erste Versuche waren nicht erfolgreich. Funktioniert nur, wenn Spalte A als Text formatiert ist und dann kann ich das Datum auch nicht mehr korrigieren, weil immer größerer in Spalte A Unsinn entsteht.
Ich denke mal, dass das Problem schon mehrfach gelöst wurde.
Hat jemand eine funktionierende Lösung?
Hier mein Versuch:
Private Sub Worksheet_Change(ByVal Target As Range)
' Spalte A ist als Text formartiert
Dim s%, m%, s1%
Dim x1 As String
Dim x, dat, dat1 As Date
y = Year(Date) ' Vergleichsjahr
festlegen
z = 1 ' Indikator
'Soll nur bei einer Eingabe in Spalte A wirksam werden:
If Target.Column <> 1 Then Exit Sub
With Target
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And InStr(.Value, ",") = 0 Then
If Len(.Value) = 6 Then
s = Mid(.Value, 1, 2)
m = Mid(.Value, 3, 2)
s1 = Mid(.Value, 5, 2)
z = 1
End If
If z = 1 Then
dat = CDate(s & "." & m & "." & s1)
If IsDate(dat) Then
y1 = Year(dat)
If y1 < (y + 1) Then ' Eingegebenes Datum nach oben begrenzen
.Value = dat
.NumberFormat = "dd.mm.yyyy"
Else
MsgBox "Jahreszahl passt nicht!"
.Value = Clear
Exit Sub
End If
End If
End If
End If
End With
End Sub