Tabellenzellen abfragen und nach Inhalt formatieren

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.  

               
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
Sub Tabelle_durchlaufen()

   Dim Zelle As Word.Cell 
   Dim Tabelle As Word.Table 
   Dim Zeile As Word.Row 
   Set Tabelle = Selection.Tables(1) 
    
   For Each Zeile In Tabelle.Rows 
       For Each Zelle In Zeile.Cells
             If Zellwert(Zelle.Range) <> "" Then 
              Zelle.Shading.Texture = wdTexture10Percent 
           End If 
       Next 
   Next 
    
End Sub 

 

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: 

               
001
002
003
004
005
006
007
008
009
010
011
012
013
Function Zellwert(Zellinhalt As StringAs String 

   Dim strWert As String 

    strWert = Zellinhalt 
    Do While Right(strWert, 1) = Chr(13) 
        strWert = Left(strWert, Len(strWert) - 1) 
    Loop 
         
    Zellwert = strWert 

End Function 


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:

               
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
Sub Tabelle_durchlaufen_3() 

   Dim Zelle As Word.Cell 
   Dim Zelle1 As Word.Cell 
   Dim Tabelle As Word.Table 
   Dim Spalte As Word.Row 
   Set Tabelle = Selection.Tables(1) 
    
   For Each Spalte In Tabelle.Rows 
       For Each Zelle In Spalte.Cells 
           If Zellwert(Zelle.Range) <> "" Then 
               For Each Zelle1 In Spalte.Cells 
                   Zelle.Shading.Texture = wdTexture10Percent 
               Next 
              
           End If 
       Next 
   Next 
    
End Sub 


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!

 

 



zurück zur Übersicht Tabellen
Diese Seite zu Mister Wong hinzufügen
Diese Seite zu ecure.del.icio.us hinzufügen
Diese Seite zu webnews hinzufügen
Diese Seite zu Google Bookmarks hinzufügen
Diese Seite zu linkarena hinzufügen
Diese Seite zu Yahoo hinzufügen










Für weitere Infos bitte auf den Text klicken

http://www.prawi-officewelt.de
 
©2008 - 2024 www.VBA-Wordwelt.de - alle Rechte vorbehalten
 
Kontakt | Impressum
los Suche

Cookies speichern Informationen lokal auf Ihrem Rechner, ohne die Verwendung kann der Funktionsumfang beeinträchtigt werden. Weitere Informationen


Annehmen