ich habe gestern große hilfe bei der lösung meines formatierungsproblems durch das forum erhalten.
funktioniert soweit reibungslos, sagte ich schon gestern. habe es mit meinen beschränkten vba kenntnissen heute noch für mich zurechtgeschrieben(umgeändert)(wahrsch. total umständlich und vielleicht auch noch falsch). aber läuft und ich bin froh.
kurze erläuterung um was es geht:
in spalte 33 schreibe ich bestimmte werte worauf die benachbarte zelle der spalte 34 mit einem bestimmten format reagiert. das gleiche bloss mit anderen werten in spalten 42 und 43. sieht so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim Zahl As Integer
If Target.Column = 33 Then
For i = 1 To Len(Target.Value)
On Error GoTo w1
Zahl = Zahl & Mid(Target.Value, i, 1)
Next i
w1:
If Zahl = 50 Then
Target.Offset(0, 1).NumberFormat = "0.0"
ElseIf Zahl = 75 Then
Target.Offset(0, 1).NumberFormat = "0.0"
ElseIf Zahl = 1000 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"
End If
End If
If Target.Column = 34 Then
For i = 1 To Len(Target.Value)
On Error GoTo w2
Zahl = Zahl & Mid(Target.Offset(0, -1).Value, i, 1)
Next i
w2:
If Zahl = 1000 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"
End If
End If
If Target.Column = 42 Then
For i = 1 To Len(Target.Value)
On Error GoTo w3
Zahl = Zahl & Mid(Target.Value, i, 1)
Next i
w3:
If Zahl = 100 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"
ElseIf Zahl = Schlagball Then
Target.Offset(0, 1).NumberFormat = "0.0"
ElseIf Zahl = Wurfball Then
Target.Offset(0, 1).NumberFormat = "0.0"
ElseIf Zahl = Schleuderball Then
Target.Offset(0, 1).NumberFormat = "0.0"
ElseIf Zahl = GeräteKombi Then
Target.Offset(0, 1).NumberFormat = "0.0"
End If
End If
If Target.Column = 43 Then
For i = 1 To Len(Target.Value)
On Error GoTo w4
Zahl = Zahl & Mid(Target.Offset(0, -1).Value, i, 1)
Next i
w4:
If Zahl = 100 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"
End If
End If
End Sub
jedoch stellte ich heute fest, (Problem 1:) dass wenn ich das Arbeitsblatt schütze das makro nicht mehr ausgeführt wird. wenn ich nur objekte und szenarien schütze und inhalte (kein häkchen) nicht, dann gehts. aber dann sind meine formel nicht mehr geschützt-geht also so nicht. es kommt dann folgende fehlermeldung:
Laufzeitfehler '1004':
Die NumberFormat-Eigenschaft des Range-Objektes kann nicht festgelegt werden.
und im VBA-Code selber ist dann die zeile mit folgendem inhalt markiert:
For i = 1 To Len (Target.Value)
Problem 2 (weniger tragisch aber störend): wenn ich mehrere werte in den benannten spalten durch "markieren" und "enf" lösche, dann kommt auch eine fehlermeldung, die ich dann wegklicke und dann is wieder gut.
Laufzeitfehler '13':
Typen unverträglich
wenn ich jede zelle einzeln lösche passiert nichts.
so, das waren meine 2 täglichen problemchen.