Formatieren von tabellarischen Ausgaben mit wiederverwendbaren Prozeduren

Viele VBA-Programme geben tabellarische Darstellungen auf Arbeitsblätter aus. Es soll hier gezeigt werden, wie man solche Tabellenausgaben mit wiederverwendbaren Prozeduren formatieren kann.

 

Das folgende Bild zeigt eine kleine Tabelle, welche formatiert werden soll:

 

 

Die Formatierung erfolgt durch eine Prozedur, welcher der Tabellenbereich, in dem sich die Daten befinden, als Parameter übergeben wird. Innerhalb der Prozedur werden dann die Formatierungs­merkmale direkt in diesen Bereich eingefügt.

 

Public Sub formatTable03(ByVal r As Range)

 

   Dim h As Range   'header

   Dim b As Range   'bottom line

   Set h = r.Rows(1).Cells

   Set b = r.Rows(r.Rows.Count)

 

   With r

       .Borders(xlInsideVertical).LineStyle = xlDash

       .Borders(xlInsideHorizontal).LineStyle = xlDash

       .Borders(xlInsideVertical).Weight = xlThin

       .Borders(xlInsideHorizontal).Weight = xlThin

      

       With .Interior

       .Pattern = xlSolid

       .PatternColorIndex = xlAutomatic

       .ThemeColor = xlThemeColorAccent5

       .TintAndShade = 0.799981688894314

       .PatternTintAndShade = 0

       End With

      

   End With

  

   h.Borders(xlEdgeTop).LineStyle = xlContinuous

   h.Borders(xlEdgeTop).Weight = xlThin

   h.Borders(xlEdgeBottom).LineStyle = xlContinuous

   h.Borders(xlEdgeBottom).Weight = xlMedium

   b.Borders(xlEdgeBottom).LineStyle = xlContinuous

   b.Borders(xlEdgeBottom).Weight = xlMedium

  

End Sub

 

Die Prozedur kann z.B. aus einem Formularmodul aufgerufen werden. Wir betrachten hierzu ein kleines Beispiel. Das kleine Formular im folgenden Bild besitzt ein RefEdit-Steuerelement zum Einlesen des zu formatierenden Bereichs. Der Benutzer muss hierzu nur die Bereich (im Bild links) markieren. Anschließend drückt er die Schaltfläche <Formatieren>.

 

 

 

Der Rumpf der Ereignisprozedur für die Schaltfläche besteht nur aus einer Zeile. Da sich die Forma­tie­rungs­prozedur formatTable03 in einem Modul namens GR befindet, wird diese Bezeichnung dem Auf­ruf vorangestellt.

 

Private Sub FormatBtn_Click()

   GR.formatTable03 Application.Range(Me.FormatRefEd.Text)

End Sub

 

Das nächste Bild zeigt die formatierte Tabelle.