Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2014.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Diagramme formatieren per VBA

Access bietet mit Microsoft Graph die Möglichkeit, Daten in Diagrammen darzustellen. Dieses Diagramm können Sie über den Assistenten mit Daten füllen. Üblicherweise müssen Sie dann aber noch an einigen Schrauben drehen, damit das Diagramm Ihren Anforderungen entspricht – zum Beispiel, um den Inhalt und die Formatierung von Beschriftungen anzupassen. Das Graph-Objekt können Sie allerdings auch per VBA steuern – wie das gelingt, zeigt der vorliegende Beitrag.

Ein Diagramm fügen Sie üblicherweise über den entsprechenden Eintrag in der Werkzeugleiste (im Ribbon von Access 2010 etwa unter Ent­wurf|Steuer­ele­men­te|Dia­gramm zu finden). Nach dem Platzieren des Steuerelements im Formular erscheint wie in Bild 1 der Diagramm-Assistent, der Ihnen beim Einrichten des Diagramms hilft.

Hinzufügen eines Diagramms per Assistent

Bild 1: Hinzufügen eines Diagramms per Assistent

Dieser Assistent lässt sich leider nicht umgehen, um beispielsweise einfach ein leeres Diagramm zum Formular hinzuzufügen, das Sie dann schrittweise anpassen – wir müssen also den Assistenten durchlaufen und die notwendigsten Einstellungen vornehmen. In diesem Fall wählen Sie einfach die Tabelle tblArtikel als Datenherkunft aus und fügen die beiden Felder Artikelname und Einzelpreis zum Diagramm hinzu. Wählen Sie als Diagrammtyp Säulendiagramm aus und stellen Sie die Felder für das Layout wie in Bild 2 ein. Behalten Sie den Titel bei und lassen Sie auch die Anzeige einer Legende vorerst aktiviert. Klicken Sie dann auf Fertigstellen.

Einstellen der Daten für das Diagramm

Bild 2: Einstellen der Daten für das Diagramm

Das fertige Diagramm sieht nun, nach Einstellen der entsprechenden Breite, etwa wie in Bild 3 aus. Nun schauen wir uns an, wie wir das Diagramm per VBA tunen können.

Erste Version des Diagramms

Bild 3: Erste Version des Diagramms

Verweis setzen

Dummerweise zeigt der VBA-Editor gar keine Objekte zum Chart-Objekt an.

Das liegt daran, dass dieses Objekt einerseits nicht zum eingebauten Umfang von Access gehört und andererseits nicht automatisch ein Verweis auf die entsprechende Bibliothek hinzugefügt wird.

Dies holen Sie nun nach, indem Sie im VBA-Editor den Menübefehl Extras|Verweise ausführen und im Dialog aus Bild 4 den Eintrag Microsoft Chart x.0 Object Library aktivieren.

Hinzufügen eines Verweises auf die Bibliothek zum Graph-Diagramm

Bild 4: Hinzufügen eines Verweises auf die Bibliothek zum Graph-Diagramm

Steuerelementname anpassen

Um gleich komfortabel auf das Chart-Objekt zugreifen zu können, ändern Sie den Namen des soeben zum Formular hinzugefügten Steuerelements auf ctlChart.

Diagrammtitel ändern

Als Erstes wollen wir per VBA den Titel des Diagramms ändern. Dazu fügen Sie dem Formular ein Textfeld zum Eingeben des neuen Titels namens txtTitel sowie eine Schaltfläche namens cmdTitelAendern hinzu, welche den Titel im Chart-Objekt ändern soll – etwa so, wie in Bild 5.

Chart-Objekt mit geändertem Titel

Bild 5: Chart-Objekt mit geändertem Titel

Die Prozedur, die durch die Schaltfläche ausgelöst wird, finden Sie in Listing 1. Wenn Sie versuchen, eine Eigenschaft zum Ändern des Titels des Diagramms für das Objekt Me!ctlChart zu finden, werden Sie Probleme bekommen – dort sind keine für das Steuerelement spezifischen Eigenschaften zu finden. Stattdessen greifen Sie auf das Objekt selbst über die Eigenschaft Object zu – genau so, wie Sie es auch etwa beim TreeView-Steuerelement erledigen.

Private Sub cmdTitelAendern_Click()
     Dim objChart As Chart
     Set objChart = Me!ctlChart.Object
     objChart.ChartTitle.Caption = Nz(Me!txtTitel)
End Sub

Listing 1: Prozedur zum Ändern des Titels des Diagramms

Nun bietet Me!ctlChart.Object keine IntelliSense-Unterstützung an, sodass wir zunächst noch eine Objektvariable deklarieren, die das in ctlChart enthaltene Objekt referenziert. Dieses deklarieren wir mit dem Namen objChart und dem Typ Chart. Nun können Sie über die Eigenschaft Caption des Objekts ChartTitle auf die für die Beschriftung zuständige Eigenschaft zugreifen.

Tragen Sie nun einen neuen Titel in das Textfeld ein und klicken auf die Schaltfläche, ändert sich auch der Titel im Chart-Objekt.

Diagrammtyp einstellen

Die nächste Änderung, die wir vornehmen möchten, betrifft den Diagrammtyp. Diesen legen Sie mit der Eigenschaft ChartType des Chart-Objekts fest.

Die einzelnen Werte können Sie unter VBA über die Enumeration XlChartType ermitteln, wie etwa in Bild 6 im Direktbereich des VBA-Editors.

Diagrammtyp-Enumeration per VBA

Bild 6: Diagrammtyp-Enumeration per VBA

Wenn wir aber nun nicht direkt im Code arbeiten, sondern die Diagramm-Art etwa per Kombinationsfeld auswählen möchten, benötigen wir die entsprechenden Zahlenwerte und Bezeichnungen/Konstanten als Datensatzherkunft für das entsprechende Steuerelement. Also legen wir schnell eine Tabelle an und tragen dort die benötigten Datensätze ein – jeweils mit dem Zahlenwert im Feld CharttypeID und der Konstanten in den Feldern Charttype und Bezeichnung einer Tabelle namens tblCharttypes (s. Bild 7).

Tabellen mit den Diagrammtypen

Bild 7: Tabellen mit den Diagrammtypen

Diese Tabelle dient dann auch als Datensatzherkunft eines neuen Kombinationsfeldes im Formular frmDiagramme namens cboDiagrammtyp (s. Bild 8) – genau genommen die folgende Abfrage auf Basis dieser Tabelle:

Auswahl von Diagrammtypen

Bild 8: Auswahl von Diagrammtypen

SELECT CharttypeID, ­Bezeichnung FROM tblCharttypes;

Mit dem Kombinationsfeld können Sie nun einen der Diagrammtypen auswählen. Damit dieser auch auf das Chart-Objekt angewendet wird, fügen Sie der Ereigniseigenschaft Nach Aktualisierung die Ereignisprozedur aus Listing 2 hinzu.

Private Sub cboDiagrammtyp_AfterUpdate()
     Dim objChart As Chart
     Set objChart = Me!ctlChart.Object
     objChart.ChartType = Me!cboDiagrammtyp
End Sub

Listing 2: Prozedur zum Ändern des Diagrammtyps

Diese stellt die Eigenschaft ChartType auf den im Kombinationsfeld ausgewählten Wert ein. Auf diese Weise können Sie sich schnell die verschiedenen Typen ansehen.

Position der Beschriftung

Neben der ersten Schaltfläche fügen wir noch zwei weitere Schaltflächen hinzu, mit denen wir die Beschriftung des Diagramms schrittweise nach links oder rechts bewegen.

Für diese beiden Schaltflächen hinterlegen wir die folgenden Prozeduren:

Private Sub cmdTitelNachLinks_Click()
     ...
     objChart.ChartTitle.Left = objChart.ChartTitle.Left - 10
End Sub
Private Sub cmdTitelNachRechts_Click()
     ...
     objChart.ChartTitle.Left = objChart.ChartTitle.Left + 10
End Sub

Die erste verschiebt das Objekt mit der Beschriftung um zehn Schritte gegenüber der vorherigen Position nach links, die zweite verschiebt es nach rechts.

Legende bearbeiten

In manchen Diagrammen ist eine Legende sinnvoll, in anderen nicht.

Daher schauen wir uns zunächst an, wie Sie die Legende ein- und ausblenden können. Dazu legen wir ein passendes Kontrollkästchen namens chkLegendeAnzeigen an.

Dieses füllen wir, genau wie das Textfeld txtTitel, von nun an direkt beim Öffnen des Formulars, genau genommen in der Ereignisprozedur Form_Load, mit der aktuellen Einstellung des Chart-Objekts. Die Prozedur finden Sie in Listing 3.

Private Sub Form_Load()
     Dim objChart As Chart
     Set objChart = Me!ctlChart.Object
     Me!txtTitel = objChart.ChartTitle.Caption
     Me!chkLegendeAnzeigen = objChart.HasLegend
End Sub

Listing 3: Einlesen einiger Chart-Eigenschaften

Das Kontrollkästchen chkLegende statten wir mit einer Prozedur aus, die durch das Ereignis Nach Aktualisierung ausgelöst wird:

Private Sub chkLegendeAnzeigen_Click()
     Dim objChart As Chart
     Set objChart = Me!ctlChart.Object
     objChart.HasLegend = Me!chkLegendeAnzeigen
End Sub

Mit dieser Prozedur können Sie durch einen einfachen Klick auf das Kontrollkästchen die Legende ein- und ausschalten – siehe Bild 9.

Ein- und Ausblenden der Legende des Chart-Objekts per Kombinationsfeld

Bild 9: Ein- und Ausblenden der Legende des Chart-Objekts per Kombinationsfeld

Weitere Eigenschaften der Legende

Das Legend-Objekt bietet noch weitere Eigenschaften:

  • Border: Liefert Eigenschaften zum Einstellen des Rahmens
  • Fill: Objekt, mit dem Sie weitere Eigenschaften bezüglich des Aussehens festlegen können
  • Font: Liefert alle notwendigen Eigenschaften zum Einstellen der Schriftart
  • Height, Width: Höhe und Breite der Legende
  • Interior: Legt die Eigenschaften des Hintergrunds fest.
  • Left, Top: Position der Legende
  • Name: Name des Objekts
  • Parent: Verweis auf das übergeordnete Objekt
  • Position: Bestimmt die Position der Legende – Konstanten siehe unten
  • Shadow: Aktiviert oder deaktiviert einen Schatten.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.