ich habe eine Excel-Datei in der in Spalte C immer ein spezifisches Datum eingetragen wird.
Um das Datum ohne Punkt eintragen zu können benutze ich folgenden Code in Modul 1:
Dim regex As Object
Sub ProcessRanges()
Dim cell As Range, result As String
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "^(0?[1-9]|[1-2][0-9]|3[0-1])(0[1-9]|1[0-2])(19[0-9][0-9]|[2-9]\d{3})$"
With ActiveSheet
For Each cell In .Range("C2:C" & .Cells(Rows.Count, "C").End(xlUp).Row)
FormatDate cell
Next
End With
Set regex = Nothing
End Sub
Sub FormatDate(rngCell As Range)
Dim result As Date
If regex.Test(rngCell.Text) Then
result = regex.Replace(rngCell.Text, "$1.$2.$3")
rngCell.NumberFormatLocal = "TT.MM.JJJJ"
rngCell.Value = CDate(result)
End If
End Sub
Darüber hinaus habe ich im Tabellenblatt folgenden Code, der dafür sorgen soll, dass das Makro ProcessRanges ()
automatisch ausgeführt wird, wenn die entsprechende Zelle mit dem Datum verlassen wird.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("C:C")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
ProcessRanges
End If
End Sub
Ich habe folgendes Problem: Wenn ich in C1 ein Datum eintrage, setzt das Makro
erst die Punkte ein, wenn ich in Zelle C2 klicke/springe. Ich möchte aber, dass die Punkte direkt
eingesetzt werden, sobald ich Zelle C1 verlasse. Kann mir hier jemand helfen wie ich das umsetzen kann?
Hier ist eine Testdatei: https://www.herber.de/bbs/user/150223.xlsm