vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Word   |   VB-Versionen: VBA19.08.15
Tabellen zeilenweise alternierend färben; VBA Word (2007)

Der Tipp als VBA-Projekt zeigt das Färben von Tabellenzeilen in alternierenden Farben

Autor:   Dietrich HerrmannBewertung:  Views:  7.391 
ohne HomepageSystem:  WinXP, Win7, Win8, Win10, Win11 Beispielprojekt 

Dieser Tipp ist eher für VBA-Beginner gedacht, um ein paar Programmierprinzipien zu veranschaulichen. Denn es gibt in Word 2007 auch die integrierte Funktion Tabellen-Layout, wo man verschiedene voreingestellte Farblayouts nutzen kann. Allerdings enthält unser Tipp noch eine zusätzliche Funktion:

  • Die Anwendung eines ColorDialogs
  • Das Einfärben von Zeilen als Zeilengruppen in Abhängigkeit von Werten in einer definierten Spalte. Die Tabelle muss nach den Werten in dieser Spalte sortiert sein.
  • Weiterhin werden im Tipp die Verwendung von Variablen in einem Word-Dokument demonstriert als auch die Verwendung von animiertem GIF in einem WebbrowserControl (als Waiting-Graphic).

Hier die Funktion für das Einfärben von Zeilen:

' Erzeugen gefärbter Zeilengruppen (alternierend)
' entweder in Anzahl von Zeilen oder auf Grund von Werten in spezieller Spalte
' in Word-Tabellen
' tb: Nummer der Word-Tabelle
' art: Art der Einfärbung
' farbe1: erste Farbe
' farbe2: zweite Farbe
' tit: mit|ohne Einbeziehung von Titelzeilen
' titA: Anzahl der Titelzeilen
' sp: Spaltennummer für Vergleich bei Färbung nach Werten
' vglAnz: alle Vergleichswerte in sp anzeigen oder nicht
Public Sub TableColoringAlternateRows(tb As Integer, art As Integer, _
  farbe1 As Long, farbe2 As Long, tit As Boolean, titA As Integer, _
  sp As Integer, vglAnz As Boolean)
 
  Dim specStr As String
  Dim lastValue As String, aktValue As String
  Dim cFarbe As Long
 
  If tit Then a = titA Else a = 0
  lastValue = ""
  rowAnz = ActiveDocument.Tables(tb).Rows.Count
    For i = 1 + a To rowAnz
      With ActiveDocument.Tables(tb).Rows(i).Shading
        Select Case art
          Case 1  ' einzeilig
            If i Mod 2 = titA - 1 Then
              .BackgroundPatternColor = farbe1
            Else
              .BackgroundPatternColor = farbe2
            End If
 
          Case 2  ' zweizeilig
            If i Mod 4 = titA - 1 Or i Mod 4 = titA Then
              .BackgroundPatternColor = farbe2
            Else
              .BackgroundPatternColor = farbe1
            End If
 
          Case 3  ' dreizeilig
            If i Mod 6 = titA + 1 Or i Mod 6 = titA + 2 Or i Mod 6 = titA + 3 Then
              .BackgroundPatternColor = farbe1
            Else
              .BackgroundPatternColor = farbe2
            End If
 
          Case 4  ' vierzeilig
            If i Mod 8 = titA + 1 Or i Mod 8 = titA + 2 Or i Mod 8 = titA + 3 Or i Mod 8 = titA + 4 Then
              .BackgroundPatternColor = farbe1
            Else
              .BackgroundPatternColor = farbe2
            End If
 
          Case 5  ' nach Werten
            specStr = ActiveDocument.Tables(tb).Rows(i).Cells(sp).Range.text
            specStr = Left(specStr, Len(specStr) - 2)   ' einkürzen nötig wegen Tabellenzellen-Notation
            aktValue = specStr
            If lastValue = "" Or lastValue <> aktValue Then
              lastValue = aktValue
              If cFarbe = farbe1 Then cFarbe = farbe2 Else cFarbe = farbe1    ' Farbwechsel
'                If vglAnz = False Then
'                  ActiveDocument.Tables(tb).Rows(i).Cells(sp).Range.text = ""
'                End If
              End If
              .BackgroundPatternColor = cFarbe
        End Select
      End With
      DoEvents
    Next 
  selection.StartOf unit:=wdTable
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.