27.11.2023, 23:14
der Absturz kommt durch eine Stapelüberlauf. Ursache ist wie ich schon oben beschrieben habe.
hier dein Change event etwas umgebaut. Wobei du dir mal überlegen solltet ob es Sinn macht in Spalte C den Text groß zu schreiben, wenn du im UrlaubKrank-Blatt aber die Kleinschreibung der Texte zählen willst.
in wieweit man bei IsEmpty(Target) den Wert auf leeren String setzen muß, ist auch etwas fraglich. Die Zelle ist ja schon leer.
hier dein Change event etwas umgebaut. Wobei du dir mal überlegen solltet ob es Sinn macht in Spalte C den Text groß zu schreiben, wenn du im UrlaubKrank-Blatt aber die Kleinschreibung der Texte zählen willst.
in wieweit man bei IsEmpty(Target) den Wert auf leeren String setzen muß, ist auch etwas fraglich. Die Zelle ist ja schon leer.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Eingabe As Variant
If Not Intersect(Target, Range("C5:C35")) Is Nothing Then
If Not IsNumeric(Target) Then
Application.EnableEvents = False
Target.Value = UCase(Target)
Application.EnableEvents = True
End If
End If
If Not Intersect(Target, Range("C2,H2,F37,F43,C5:E35")) Is Nothing Then
With Target
If IsEmpty(Target) Then
Application.EnableEvents = False
.Value = ""
Application.EnableEvents = True
Else
If IsNumeric(.Value) Then
Application.EnableEvents = False
.Value = Left(Format(Target, "0000"), 2) & ":" & Right(Target, 2)
' funkt am besten
' Wenn Std über 24 und gleichzeit Minuten über 60 erfasst werden, wird Text zurückgegeben.
.NumberFormat = "[h]:mm"
Application.EnableEvents = True
End If
End If
End With
End If
If Not Intersect(Target, Range("f47")) Is Nothing Then
With Target
If IsEmpty(Target) Then
Application.EnableEvents = False
.Value = ""
Application.EnableEvents = True
Else
If IsNumeric(.Value) Then
.Value = Left(Format(Target, "00000"), 3) & ":" & Right(Target, 2)
' funkt am besten
' Wenn Std über 24 und gleichzeit Minuten über 60 erfasst werden, wird Text zurückgegeben.
.NumberFormat = "[h]:mm"
End If
End If
End With
End If
End Sub