Re: Uups, falscher Code
11.10.2002 10:56:34
Hajo_Zi
Hallo Borisaus Deinem letzten Beitrag geht nun hervor das nicht alle Zellen mit Bedingter Formatierung eingestellt sind. Sondern welche auch von Hand???
Ich habe ja schon im ersten Beitrag geschrieben das es mir zu Aufwendig ist und das ich Deinen Mut für solche Aufgabe bewundere.
Es geht ja nur um 3 Zellen. Ich hätte mal folgenden Ansatz gewählt.
Die Zelladresse und Farben in ein 2 Dimensionales Array schreiben.
Bei Private Sub Worksheet_SelectionChange(ByVal Target As Range) als erstes die neuen auslesen und dann die alten zurücksetzen.
Für alle Tabellen und alle Zellen und zurücksetzen beim schließen habe ich es mal so gelöst. Vielleicht bekommst Du es umgebaut. Falls ja Poste es in diesen Beitrag, dann werde ich auch Benachrichtigt. Die Lösung würde mich schon intressieren.
In ein Modul
Option Explicit
Public OldColorIndex As Variant
Public OldRange As String
Public Register As String
in DieseArbeitsmappe
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If OldRange <> "" Then ActiveSheet.Range(OldRange).Interior.ColorIndex = OldColorIndex
End Sub
Private Sub Workbook_Open()
OldRange = ActiveCell.Address
Register = ActiveSheet.Name
OldColorIndex = ActiveCell.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = 3
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
OldRange = ActiveCell.Address
OldColorIndex = ActiveCell.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = 3
Register = ActiveSheet.Name
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If OldRange <> "" Then Worksheets(Register).Range(OldRange).Interior.ColorIndex = OldColorIndex
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' Beim 1. Aufruf ist OldRange noch undefiniert
If OldRange = "" Then
OldRange = Target.Address
OldColorIndex = Target.Interior.ColorIndex
' Setze Hintergrundfarbe der aktiven Selection auf Rot
Target.Interior.ColorIndex = 3
Else
' Setze alten Range auf alte Farbe
If Range(OldRange).Interior.ColorIndex = 3 Then
Range(OldRange).Interior.ColorIndex = OldColorIndex
End If
OldColorIndex = Target.Interior.ColorIndex
' Merke mir aktuellen Adresse für nächsten Aufruf
OldRange = Target.Address
' Setze Hintergrundfarbe der aktiven Selection auf Rot
Target.Interior.ColorIndex = 3
End If
End Sub
Code eingefügt mit Syntaxhighlighter 1.16
Gruß Hajo