Hallo liebe Spezialisten - Gemeinde
Ich habe mir in Excel 2003 einen Code im Tabellenblatt geschrieben, welcher folgendes bewirkt: 1.) Bei Texteintrag „Urlaub“, „Krank“ bzw. „Za“ in Zelle „D4“ wird der Inhalt aus der Zeile „E4“ bis „M4“ gelöscht.
2.) Sodann je nach Eintrag grün, blau oder rot eingefärbt und zwar von „B4“ bis „M4“.
3.) Und zu guter letzt wird der Zellenrahmen entfern und nur noch „Rahmenlinien außen“ „B4“ bis „M4“ erzeugt.
Ich bin zufrieden da er klaglos funktioniert, aber ich bin mir nicht sicher ob er auch optimal ist, da er mir doch recht lange vorkommt und ich den Code noch um einige Ereignisse erweitern möchte. Also würde ich euch Profis darum bitten meinen Code etwas zu kürzen, wenn dies möglich ist. Wenn Ja, dann bitte mit Kommentare, da ich ihn wie gesagt erweitern möchte. Herzlichen Dank und schone Grüße aus Wien.
Hier der VBA Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 4 Then Exit Sub
Select Case Target.Value
Case „Krank“
Range(Cells(Target.Row, 5), Cells(Target.Row, 13)).ClearContents
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).Interior.ColorIndex = 3
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Case „Za“
Range(Cells(Target.Row, 5), Cells(Target.Row, 13)).ClearContents
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).Interior.ColorIndex = 5
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Case „Urlaub“
Range(Cells(Target.Row, 5), Cells(Target.Row, 13)).ClearContents
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).Interior.ColorIndex = 4
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
'FREI FUER WEITERE BEDINGUNGEN
’ Case „AllesRot“
’ Range(Cells(Target.Row, 5), Cells(Target.Row, 13)).ClearContents
’ Range(Cells(Target.Row, 4), Cells(Target.Row, 13)).Interior.ColorIndex = 4
Case Else
Rows(Target.Row).Interior.ColorIndex = 2
End Select
End Sub