Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Kopieren einer bedingten Formatierung





Frage

Hallo Leute, ich möchte in einer Tabelle spaltenweise die Zellen rot markieren die sich im Wert von ihrer vorigen Zelle unterscheiden. Beim Aufzeichnen eines solchen Makros kam dieser (Teil)-Code dabei heraus: Range("C3").Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlCellValue, _ Operator:=xlNotEqual, Formula1:="=C2" Selection.FormatConditions(1).Font.ColorIndex = 3 Selection.Copy Cells(lZeilenAnzahl, 256).Name = "Bereichsende" Range("C3", "Bereichsende").Select Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Range("B2").Select Das wollte ich vereinfachen und die ganzen .Select Anweisungen entfernen, allerdings werden beim folgenden Code die Zellen auch Zeilenweise verglichen und entsprechend rot gefärbt. With Range("C3").FormatConditions .Delete .Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="=C2" End With Range("C3").FormatConditions(1).Font.ColorIndex = 3 Range("C3").Copy Range("C3", Cells(lZeilenAnzahl, 256)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False an welcher Stelle habe ich den 2. Code so geändert, dass auch zeilenweise verglichen wird? Die bedingte Formatierung vergleicht doch auch nur den aktuellen Zellenwert mit dem darüberliegenden ( "C3" mit "C2") vielen Dank im voraus ;-)

Antwort 1 von coros

Moin Erne,

beide Codes vergleichen Zeilenweise. Das hat wenig mit Deinem bereinigten Code zu tun. Der erste Fehler liegt in der Zeile

.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="=C2"

Dort gibt es keinen absoluten Bezug, also durch einfügen des Dollarzeichens ($), auf die Spalte. Durch die Zeile

Range("C3", Cells(lZeilenAnzahl, 256)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

wird dieser relativer Bezug auf die andere Spalte übertragen. Excel setzt dann automatisch diese Bezüge und die beziehen sich dann wieder auf die Spalte links daneben. So wie Du das anstellen möchtest, wird das nichts. Nachfolgend mal ein Code, der Dir Spaltenweise Deine Zahlen vergleicht und die, die voneinander abweichen rot einfärbt. Allerdings nicht als bedingte Formatierung. Kopiere das Makro in ein „StandardModul“ und starte es über eine Schaltfläche.

Option Explicit

Sub Zahlen_vergleichen()
Dim Spalte As Integer, Zeile As Long
Application.ScreenUpdating = False
For Spalte = 3 To 256
For Zeile = 3 To Range("C65536").End(xlUp).Row
If Cells(Zeile, Spalte) <> Cells(Zeile - 1, Spalte) Then Cells(Zeile, Spalte).Font.ColorIndex = 3
Next
Next
End Sub

Wenn Du den Code lieber mit bedingter Formatierung haben möchtest, so melde Dich noch mal.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Erne

Hallo Oliver,
vielen Dank für Deinen Tipp.
Dein Makro habe ich eingebunden, und es funktioniert auch;
allerdings mit dem Nachteil, dass es wesentlich langsamer abläuft...

Deswegen werde ich wohl einfach wieder das "Original"
Range("C3").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, _ Operator:=xlNotEqual, Formula1:="=C2"
Selection.FormatConditions(1).Font.ColorIndex = 3
Selection.Copy

Cells(lZeilenAnzahl, 256).Name = "Bereichsende"
Range("C3", "Bereichsende").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("B2").Select


benutzen, da es ja funktioniert, aber halt nicht so schön aussieht...

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: