title image


Smiley Der Bezug der Bedingten Formatierung per VBA hängt von der aktiven Zelle ab
Hey Frank,



ich habe das eben mal nachvollzogen :

Je nachdem, welche Zelle in den einzelnen Sheets gerade aktiv ist, ändert VBA den Bezug relativ ab, d.h. wenn B5 die aktive Zelle ist (also: Zeile 5, Spalte 2 und damit 4 Zeilen unterhalb A1 und 1 Spalte rechts von A1), dann wird aus dem Zellbezug "P3" der bedingten Formatierung eben "Q7" (also: 4 Zeilen unterhalb und 1 Spalte rechts von P3).

Das kannst Du verhindern, indem Du entweder den Bereich zuvor aktivierst (entgegen den sonst überflüssigen .Activate oder .Select - Methoden macht das hier Sinn !), oder indem du den Offset der aktiven Zelle zuvor berechnest (das war mir jetzt zu aufwendig ;-)).

Hier ein Beispiel-Code für 3 Tabellenblätter, in dem ich mich für die erste Variante (Bereich P3:P89 zuvor aktivieren) entschieden habe. Deine Methode, die Bedingte Formatierung für nur 1 Zelle zu erstellen und deren Format auf die Zeilen 3 bis 89 zu kopieren ist etwas unprofessionell, daher habe ich das verworfen ;-) :

      

Sub BedingteFormatierung()

    For i = 1 To 3

        Sheets(i).Activate

        With Range(Cells(3, 16), Cells(89, 16))

            .Activate 'ohne Activate hängt der Bezug von der aktiven Zelle ab !

            .FormatConditions.Delete

            .FormatConditions.Add Type:=xlExpression, Formula1:= _

            "=UND(B3<>" & Chr(34) & Chr(34) & ";P3=" & Chr(34) & Chr(34) & ")"

            .FormatConditions(1).Interior.ColorIndex = 3

        End With

    Next

End Sub

Das sollte jetzt vom Prinzip her funktionieren, Du musst den Code nur noch entsprechend Deinen Wünschen ergänzen.



Gruß, JerryB
Bezeichnungen der Elemente eines Excel XP Fensters (Bild, ca. 170 KB).

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: