Bedingte Änderung von Schriftfläche und -größe (Microsoft Excel)
Robin fragt, ob es eine Möglichkeit gibt, die bedingten Formatierungsfunktionen von Excel zu verwenden, um die in einer Zelle verwendete Schriftart oder die Schriftgröße in einer Zelle zu ändern. Die kurze Antwort lautet: Nein, das geht nicht – zumindest nicht mit bedingter Formatierung. (Die Steuerelemente, mit denen Sie den Namen und die Größe der Schriftart angeben können, sind im Formatierungsdialogfeld, das für die bedingte Formatierung verwendet wird, abgeblendet.)
Sie können jedoch ein Makro verwenden, um den Zellinhalt zu untersuchen und Änderungen am Erscheinungsbild einer Zelle vorzunehmen. Betrachten Sie das folgende Makro, das alle Zellen untersucht, die Sie beim Ausführen des Makros ausgewählt haben. Wenn eine der Zellen eine Länge von mehr als zwei Zeichen oder einen Wert von mehr als 10 hat, wird die Schriftart der Zelle geändert.
Sub DoReformat() Dim rCell As Range For Each rCell In Selection.Cells If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next End Sub
Um das Makro zu verwenden, wählen Sie einfach die Zellen aus, die geändert werden sollen, und führen Sie das Makro aus. Wenn Sie möchten, dass sich die Formatierung automatischer ändert, können Sie das Makro überprüfen lassen, um festzustellen, ob innerhalb eines bestimmten Zellbereichs eine Änderung vorgenommen wurde:
Private Sub Worksheet_Calculate() Dim rng As Range Dim rCell As Range Set rng = Range("A1:A10") For Each rCell In rng If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next End Sub
Dieses Makro wird beim Hinzufügen zum Arbeitsblattobjekt jedes Mal ausgeführt, wenn das Arbeitsblatt neu berechnet wird. Es überprüft den Bereich A1: A10 und wendet dieselben Tests wie im vorherigen Makro an. Das Ergebnis ist, dass die Formatierung der Zellen kontinuierlich überprüft und geändert wird. Um das Makro einen anderen Bereich prüfen zu lassen, ändern Sie einfach die Adressen, die der Variablen rng am Anfang des Makros zugewiesen sind.
Ein Nachteil dieses Makros ist, dass es träge werden kann, wenn Sie einen sehr großen Bereich zur Überprüfung haben. Es geht sehr schnell, wenn Sie A1: A10 (zehn Zellen) überprüfen, kann aber viel langsamer werden, wenn Sie kontinuierlich B2: N465 (über 6.000 Zellen) überprüfen. In diesem Fall möchten Sie das Makro möglicherweise so gestalten, dass es bei jeder Änderung des Arbeitsblatts ausgeführt wird, jedoch nur dann Maßnahmen ergreift, wenn die Änderung an einer Zelle in Ihrem Zielbereich vorgenommen wurde. Die folgende Version wird ebenfalls zum Arbeitsblattobjekt hinzugefügt:
Private Sub Worksheet_Change(ByVal Target As Range) Dim rCell As Range If Union(Target, Range("A1:A10")).Address = _ Range("A1:A10").Address Then Application.EnableEvents = False For Each rCell In Target If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next Application.EnableEvents = True End If End Sub
Das Makro verwendet die Union-Funktion, um zu überprüfen, ob sich die geänderten Zellen (die in der Zielvariablen an den Ereignishandler übergeben wurden) mit dem Bereich überschneiden, den Sie überprüfen möchten. Wenn dies der Fall ist, werden die Zellen im Zielbereich überprüft.
Bei Makros, die sich auf die Formatierung auswirken, ist zu beachten, dass bei einer bedingten Formatierung, die auf eine Zelle angewendet wird, die auch von einem Makro überprüft wird, die Formatierung in der bedingten Formatierung Vorrang vor der Formatierung im Makro hat. Wenn Ihr Makro den Schriftnamen und die Schriftgröße ändert, ist dies kein großes Problem, da die bedingte Formatierung diese Attribute nicht beeinflusst. Wenn Sie jedoch Ihr Makro so ändern, dass auch ein anderes Formatattribut geändert wird, z. B. die Zellenfarbe, und dieses Attribut auch durch das bedingte Format geändert wird, sieht es nicht so aus, als hätte das Makro etwas getan, da Excel die bedingte Formatierung bevorzugt verwendet zu dem, was das Makro tut.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (2380) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: