Kees verfügt über ein Arbeitsblatt, das häufig bedingte Formatierungen verwendet.

Die bedingte Formatierung wird jedoch immer wieder durcheinander gebracht, wenn Benutzer Informationen kopieren und einfügen oder wenn sie das Arbeitsblatt per Drag & Drop bearbeiten. Er fragt sich, wie dies am besten verhindert werden kann.

Dies geschieht, weil die bedingte Formatierung genau das berücksichtigt – die Formatierung. Ein Standard-Kopieren und Einfügen (oder eine Drag & Drop-Bearbeitung)

kopiert alles, einschließlich der Formatierung. Dies bedeutet, dass die Zielzellen die Formatierung der Quellzellen haben, nicht die Formatierung der Zielzellen (einschließlich aller bedingten Formatierungen, die möglicherweise in den Zielzellen vorhanden waren).

Die Antwort besteht also darin, den Benutzern zu sagen, dass sie kein Standard-Kopieren und Einfügen durchführen sollen.

Stattdessen sollten sie die Einfügeoptionen verwenden, um alles (oder alles) außer der Formatierung einzufügen.

Eine andere Möglichkeit besteht natürlich darin, das Arbeitsblatt so zu schützen, dass der Benutzer nichts kopieren und einfügen kann. Dies kann für Ihre Benutzer jedoch etwas drastisch sein, da Sie möglicherweise möchten, dass sie Änderungen vornehmen. (Sie möchten nur nicht, dass sie die bedingte Formatierung durcheinander bringen.)

Dies führt zu einem Makroansatz. Wenn Sie ein Makro aufzeichnen können, das die bedingte Formatierung auf die Zellen anwendet, können Sie nach Bedarf einige zusätzliche Makros erstellen, die das aufgezeichnete Makro anwenden. Nehmen wir zum Beispiel an, das von Ihnen aufgenommene Makro heißt kurz und sexy wie SetCondFormat.

Gehen Sie als Nächstes in den Visual Basic-Editor und geben Sie im Direktfenster Folgendes ein:

? Cells.SpecialCells(xlCellTypeAllFormatConditions).Address

Angenommen, Sie haben Ihre bedingte Formatierung vollständig eingerichtet, sollte dies eine Zeile – möglicherweise eine lange Zeile – zurückgeben, in der die Adressen der Zellen und Bereiche angezeigt werden, die die bedingte Formatierung verwenden. Es wird ungefähr so ​​aussehen:

$B$3:$B$50,$D$3:$D$50,$G$3:$I$20

Fügen Sie als Nächstes das folgende Makro zum ThisWorksheet-Codemodul hinzu:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim r As Range

Const cCFAddress = "$B$3:$B$50,$D$3:$D$50,$G$3:$I$20"



On Error Resume Next     Set r = Range(cCFAddress)

On Error GoTo 0

If r IsNot Nothing Then         If Application.Intersect(Target, r) IsNot Nothing Then             SetCondFormat         End If     End If End Sub

Der Schlüssel hier ist, um sicherzustellen, dass die cCFAddress-Konstante gleich dem ist, was zurückgegeben wurde, als Sie die Adressen im Sofortfenster sahen. (Wenn Sie die bedingte Formatierung zu einem späteren Zeitpunkt ändern, können Sie den Trick „Sofortiges Fenster“ erneut verwenden und einfach die Zeile im obigen Makro ändern.)

Das Makro wird jedes Mal ausgeführt, wenn sich das Arbeitsblatt ändert. Es wird überprüft, ob die geänderte Adresse (in der Zielvariablen übergeben) Teil der ursprünglichen Zellen ist, die bedingte Formate enthalten. Wenn ja, wird Ihr SetCondFormat (das, das Sie für die bedingte Formatierung aufgezeichnet haben) erneut ausgeführt.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (4362) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.