Sie haben eine größere Tabelle und wollen je nach Inhalt die Tabellenzellen formatieren. In diesem Beispiel soll die Tabellenzelle grau hinterlegt sein, wenn die Zelle gefüllt ist (eine leere Zelle erhält also keine Hintergrundfarbe).
Im folgenden Code sehen Sie, wie man die Tabelle Zelle für Zelle durchläuft und die Formatierung entsprechend vornimmt. Es gibt hier noch eine Besonderheit: Wenn Sie den Rangewert einer Zelle anzeigen lassen, steht oft am Ende eins oder zwei Zeichen - die berühmten Quadrate - mit denen man nichts anfangen kann. Diese Quadrate sind Absatzzeichen und können mit dem Wert für das Absatzzeichen in VBA, entweder Chr(13) oder der Konstanten vbCr abgefangen werden.
In unserem Beispiel über das über die zusätzliche Funktion Zellwert gemacht. Der Rückgabewert der Funktion ist der Inhalt der Zelle ohne die lästigen Zeichen.
In Zeile 3 bis 5 werden die Variablen als Objektvariablen deklariert. In Zeile 6 wird der Tabelle, in der sich die Einfügemarke befindet, das Tabellenobjekt zugewiesen. Dann werden alle Zeilen und in jeder Zeile wiederum jede Zelle durchlaufen. Der Inhalt wird in Zeile 10 durch die Funktion bestimmt. Die Formatierung wird in Zeile 11 vorgenommen.
Als Ergänzung hier die Funktion, die die Absatzmarken aus dem Zellinhalt entfernt:
Beide Codeteile müssen zusammen in einem Modul stehen!
Sie können dieses Beispiel noch erweitern. Sie wollen nicht nur die einzelne Zellen, sondern die ganze Zeile, in der sich eine Zelle mit Inhalt befindet, grau hinterlegen. Hier muss der Durchlauf nur ein wenig modifiziert werden. Die Funktion Zellwert bleibt wieder gleich:
Sie sehen, dass an der Stelle, an der die Formatierung vorgenommen wird, in den Zeilen 12 bis 14, eine neue Schleife hinzugekommen ist. Diese Schleife durchläuft noch einmal alle Zellen dieser Zeile und formatiert die zugehörigen Zellen.
Diese Codebeispiel funktionieren nicht bei Tabellen mit vertikal verbunden Zellen. Dazu müsste eine Fehlerroutine eingebaut werden! |