Schützen der bedingten Formatierung (Microsoft Excel)
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.