Hilfe bei Worksheet_Change-Funktion
Richard
ich habe da ein kleines Problem, das ich nicht mehr bewältigt kriege. Aber seht euch doch zuerst bitte einmal folgenden Code an, danach erkläre ich was ich vorhabe.
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$E$10"
If Not Len(Target.Value) = 13 Then
With Target
.Interior.ColorIndex = 22 'dann ROT
.Font.ColorIndex = 9
End With
Target.Offset(0, 0).Select 'im Feld bleiben
Else
With Target
.Interior.ColorIndex = 35 'dann GRÜN
.Font.ColorIndex = 10
End With
Target.Offset(4, 0).Select 'zum nächsten Feld springen
End If
Case "$E$14"
If Target.Value > 10000 Then
With Target
.Interior.ColorIndex = 22 'dann ROT
.Font.ColorIndex = 9
End With
Target.Offset(0, 0).Select 'im Feld bleiben
Else
With Target
.Interior.ColorIndex = 35 'dann GRÜN
.Font.ColorIndex = 10
End With
Target.Offset(6, 0).Select 'zum nächsten Feld springen
End If
Case "$E$20"
End Select
End Sub
Es geht hierbei um eine Art Formular, wo die auszufüllenden Felder bestimmte Bedingungen erfüllen müssen, damit die eingegebenen Daten anschließend weiterverarbeitet werden können. Ich habe meine beiden Beispiele sehr leicht gemacht, damit es jedem verständlich ist, aber die tatsächlichen Bedingungen sind viel komplexer. Ist eine Bedingung erfüllt wird das Feld grün hinterlegt und mit "Target.Offset" ins nächste Feld gesprungen. Ist die Bedingung nicht erfüllt, dann bleibt das Feld weiterhin aktiv/selektiert und hinterlegt sich rot, damit jeder weiß, "Aha, hier stimmt was nicht!"
Das Problem hierbei ist nun, dass man unbedingt erst in den Bearbeitungsmodus der Zelle gehen muss, damit die Bedingung abgecheckt werden kann und damit "Target.Offset" funktioniert. Ich möchte jedoch auch dann diese Überprüfung eingebaut haben, wenn man mit Enter, Tab oder den Cursor-Tasten das Feld verlässt ohne, dass es vorher bearbeitet wurde.
Ich hoffe, ich habe mich deutlich und verständlich ausgedrückt.
Mit Freundlichen Grüßen
Richard E.