nachdem mein Projekt ganz gut funktioniert, möchte ich etwas Ordnung in meine verwendeten Codezeilen bringen.
Leider tun sich hier neue Baustellen auf ;)
Funktionsweise:
Commandbutton (Aktive X Steuerelement) in Tabellenblatt1 kopiert Daten in
18 weitere Tabellenblätter. Der nachfolgende Code färbt die Werte
gemäß den Vorgaben
Aktueller Zustand:
- Code steht in 18 Tabellenblättern (Tabelle 2 - 19)
- Änderungen sind umständlich, weil in allen Tabellenblättern erforderlich
- Code funktioniert ohne Probleme
Private Sub Worksheet_Change(ByVal Target As Range)
' Inhalt der Zellen wird farblich markiert,
' wenn bestimmte Werte enthalten sind
Dim x As Long, y As Long
Application.Calculation = xlManual
For y = 8 To 140 'Zeilen
For x = 5 To 58 'Spalten
Select Case Cells(y, x).Value
Case "2"
Cells(y, x).Interior.ColorIndex = 4 'Farbe grün
Case "3"
Cells(y, x).Interior.ColorIndex = 27 'Farbe gelb
Case Is >= "4"
Cells(y, x).Interior.ColorIndex = 3 'Farbe rot
Case Else: Cells(y, x).Interior.ColorIndex = xlNone ' alte Farbe wird gelöscht
End Select
Next
Next
Application.Calculation = xlAutomatic
End Sub
Jetzt das Problem!der selbe Code in Modul1 geschrieben
Public Sub Färben1
' hier steht der Code
End Sub
Aufruf im Tabellenblatt 2-19Option Explicit
Option Private Module 'verhindert das Anzeigen als Makro
Private Sub Worksheet_Activate()
Call Färben1
End Sub
Private Sub Worksheet_Change(ByVal Target As Range
Call Färben1
End Sub
Nachteil:- seeeehr lange Bearbeitungszeit
- Es werden unzählige Zellen in Tabelle1 mit eingefärbt (Rot) obwohl weder eine bedingte Formatierung vorliegt, noch ein VBA Code.
Der "Färbecode" hat aber im Tabellenblatt1 nichts zu verändern!
Wo liegt hier mein Fehler ?
Danke für Eure Hilfe