{"id":55000937,"date":"2014-06-01T00:00:00","date_gmt":"2020-05-22T21:27:02","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=937"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Diagramme_formatieren_per_VBA","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/","title":{"rendered":"Diagramme formatieren per VBA"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/97001b1d05c942be8513361ea20d99a4\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Access bietet mit Microsoft Graph die M&ouml;glichkeit, Daten in Diagrammen darzustellen. Dieses Diagramm k&ouml;nnen Sie &uuml;ber den Assistenten mit Daten f&uuml;llen. &uuml;blicherweise m&uuml;ssen Sie dann aber noch an einigen Schrauben drehen, damit das Diagramm Ihren Anforderungen entspricht &#8211; zum Beispiel, um den Inhalt und die Formatierung von Beschriftungen anzupassen. Das Graph-Objekt k&ouml;nnen Sie allerdings auch per VBA steuern &#8211; wie das gelingt, zeigt der vorliegende Beitrag.<\/b><\/p>\n<p>Ein Diagramm f&uuml;gen Sie &uuml;blicherweise &uuml;ber den entsprechenden Eintrag in der Werkzeugleiste (im Ribbon von Access 2010 etwa unter <b>Ent-wurf|Steuer-ele-men-te|Dia-gramm <\/b>zu finden). Nach dem Platzieren des Steuerelements im Formular erscheint wie in Bild 1 der Diagramm-Assistent, der Ihnen beim Einrichten des Diagramms hilft.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_001.png\" alt=\"Hinzuf&uuml;gen eines Diagramms per Assistent\" width=\"650\" height=\"458,9833\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Hinzuf&uuml;gen eines Diagramms per Assistent<\/span><\/b><\/p>\n<p>Dieser Assistent l&auml;sst sich leider nicht umgehen, um beispielsweise einfach ein leeres Diagramm zum Formular hinzuzuf&uuml;gen, das Sie dann schrittweise anpassen &#8211; wir m&uuml;ssen also den Assistenten durchlaufen und die notwendigsten Einstellungen vornehmen. In diesem Fall w&auml;hlen Sie einfach die Tabelle <b>tblArtikel <\/b>als Datenherkunft aus und f&uuml;gen die beiden Felder <b>Artikelname <\/b>und <b>Einzelpreis <\/b>zum Diagramm hinzu. W&auml;hlen Sie als Diagrammtyp <b>S&auml;ulendiagramm <\/b>aus und stellen Sie die Felder f&uuml;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 <b>Fertigstellen<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_002.png\" alt=\"Einstellen der Daten f&uuml;r das Diagramm\" width=\"575\" height=\"360,8621\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Einstellen der Daten f&uuml;r das Diagramm<\/span><\/b><\/p>\n<p>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&ouml;nnen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_003.png\" alt=\"Erste Version des Diagramms\" width=\"650\" height=\"297,7703\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Erste Version des Diagramms<\/span><\/b><\/p>\n<p><b>Verweis setzen<\/b><\/p>\n<p>Dummerweise zeigt der VBA-Editor gar keine Objekte zum <b>Chart<\/b>-Objekt an.<\/p>\n<p>Das liegt daran, dass dieses Objekt einerseits nicht zum eingebauten Umfang von Access geh&ouml;rt und andererseits nicht automatisch ein Verweis auf die entsprechende Bibliothek hinzugef&uuml;gt wird.<\/p>\n<p>Dies holen Sie nun nach, indem Sie im VBA-Editor den Men&uuml;befehl <b>Extras|Verweise <\/b>ausf&uuml;hren und im Dialog aus Bild 4 den Eintrag <b>Microsoft Chart x.0 Object Library <\/b>aktivieren.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_004.png\" alt=\"Hinzuf&uuml;gen eines Verweises auf die Bibliothek zum Graph-Diagramm\" width=\"450\" height=\"347,8586\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Hinzuf&uuml;gen eines Verweises auf die Bibliothek zum Graph-Diagramm<\/span><\/b><\/p>\n<p><b>Steuerelementname anpassen<\/b><\/p>\n<p>Um gleich komfortabel auf das <b>Chart<\/b>-Objekt zugreifen zu k&ouml;nnen, &auml;ndern Sie den Namen des soeben zum Formular hinzugef&uuml;gten Steuerelements auf <b>ctlChart<\/b>.<\/p>\n<p><b>Diagrammtitel &auml;ndern<\/b><\/p>\n<p>Als Erstes wollen wir per VBA den Titel des Diagramms &auml;ndern. Dazu f&uuml;gen Sie dem Formular ein Textfeld zum Eingeben des neuen Titels namens <b>txtTitel <\/b>sowie eine Schaltfl&auml;che namens <b>cmdTitelAendern <\/b>hinzu, welche den Titel im <b>Chart<\/b>-Objekt &auml;ndern soll &#8211; etwa so, wie in Bild 5.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_005.png\" alt=\"Chart-Objekt mit ge&auml;ndertem Titel\" width=\"575\" height=\"322,2818\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Chart-Objekt mit ge&auml;ndertem Titel<\/span><\/b><\/p>\n<p>Die Prozedur, die durch die Schaltfl&auml;che ausgel&ouml;st wird, finden Sie in Listing 1. Wenn Sie versuchen, eine Eigenschaft zum &auml;ndern des Titels des Diagramms f&uuml;r das Objekt <b>Me!ctlChart <\/b>zu finden, werden Sie Probleme bekommen &#8211; dort sind keine f&uuml;r das Steuerelement spezifischen Eigenschaften zu finden. Stattdessen greifen Sie auf das Objekt selbst &uuml;ber die Eigenschaft <b>Object <\/b>zu &#8211; genau so, wie Sie es auch etwa beim <b>TreeView<\/b>-Steuerelement erledigen.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdTitelAendern_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>objChart<span style=\"color:blue;\"> As <\/span>Chart\r\n     <span style=\"color:blue;\">Set<\/span> objChart = Me!ctlChart.Object\r\n     objChart.ChartTitle.Caption = Nz(Me!txtTitel)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur zum &auml;ndern des Titels des Diagramms<\/span><\/b><\/p>\n<p>Nun bietet <b>Me!ctlChart.Object <\/b>keine IntelliSense-Unterst&uuml;tzung an, sodass wir zun&auml;chst noch eine Objektvariable deklarieren, die das in <b>ctlChart <\/b>enthaltene Objekt referenziert. Dieses deklarieren wir mit dem Namen <b>objChart <\/b>und dem Typ <b>Chart<\/b>. Nun k&ouml;nnen Sie &uuml;ber die Eigenschaft <b>Caption <\/b>des Objekts <b>ChartTitle <\/b>auf die f&uuml;r die Beschriftung zust&auml;ndige Eigenschaft zugreifen.<\/p>\n<p>Tragen Sie nun einen neuen Titel in das Textfeld ein und klicken auf die Schaltfl&auml;che, &auml;ndert sich auch der Titel im <b>Chart<\/b>-Objekt.<\/p>\n<p><b>Diagrammtyp einstellen<\/b><\/p>\n<p>Die n&auml;chste &auml;nderung, die wir vornehmen m&ouml;chten, betrifft den Diagrammtyp. Diesen legen Sie mit der Eigenschaft <b>ChartType <\/b>des <b>Chart<\/b>-Objekts fest.<\/p>\n<p>Die einzelnen Werte k&ouml;nnen Sie unter VBA &uuml;ber die Enumeration <b>XlChartType <\/b>ermitteln, wie etwa in Bild 6 im Direktbereich des VBA-Editors.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_008.png\" alt=\"Diagrammtyp-Enumeration per VBA\" width=\"450\" height=\"176,618\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Diagrammtyp-Enumeration per VBA<\/span><\/b><\/p>\n<p>Wenn wir aber nun nicht direkt im Code arbeiten, sondern die Diagramm-Art etwa per Kombinationsfeld ausw&auml;hlen m&ouml;chten, ben&ouml;tigen wir die entsprechenden Zahlenwerte und Bezeichnungen\/Konstanten als Datensatzherkunft f&uuml;r das entsprechende Steuerelement. Also legen wir schnell eine Tabelle an und tragen dort die ben&ouml;tigten Datens&auml;tze ein &#8211; jeweils mit dem Zahlenwert im Feld <b>CharttypeID <\/b>und der Konstanten in den Feldern <b>Charttype <\/b>und <b>Bezeichnung <\/b>einer Tabelle namens <b>tblCharttypes<\/b> (s. Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_006.png\" alt=\"Tabellen mit den Diagrammtypen\" width=\"450\" height=\"302,4862\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Tabellen mit den Diagrammtypen<\/span><\/b><\/p>\n<p>Diese Tabelle dient dann auch als Datensatzherkunft eines neuen Kombinationsfeldes im Formular <b>frmDiagramme <\/b>namens <b>cboDiagrammtyp<\/b> (s. Bild 8) &#8211;  genau genommen die folgende Abfrage auf Basis dieser Tabelle:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_007.png\" alt=\"Auswahl von Diagrammtypen\" width=\"450\" height=\"264,885\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Auswahl von Diagrammtypen<\/span><\/b><\/p>\n<pre>SELECT CharttypeID, -Bezeichnung FROM tblCharttypes;<\/pre>\n<p>Mit dem Kombinationsfeld k&ouml;nnen Sie nun einen der Diagrammtypen ausw&auml;hlen. Damit dieser auch auf das <b>Chart<\/b>-Objekt angewendet wird, f&uuml;gen Sie der Ereigniseigenschaft <b>Nach Aktualisierung <\/b>die Ereignisprozedur aus Listing 2 hinzu.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboDiagrammtyp_AfterUpdate()\r\n     <span style=\"color:blue;\">Dim <\/span>objChart<span style=\"color:blue;\"> As <\/span>Chart\r\n     <span style=\"color:blue;\">Set<\/span> objChart = Me!ctlChart.Object\r\n     objChart.ChartType = Me!cboDiagrammtyp\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Prozedur zum &auml;ndern des Diagrammtyps<\/span><\/b><\/p>\n<p>Diese stellt die Eigenschaft <b>ChartType<\/b> auf den im Kombinationsfeld ausgew&auml;hlten Wert ein. Auf diese Weise k&ouml;nnen Sie sich schnell die verschiedenen Typen ansehen.<\/p>\n<p><b>Position der Beschriftung<\/b><\/p>\n<p>Neben der ersten Schaltfl&auml;che f&uuml;gen wir noch zwei weitere Schaltfl&auml;chen hinzu, mit denen wir die Beschriftung des Diagramms schrittweise nach links oder rechts bewegen.<\/p>\n<p>F&uuml;r diese beiden Schaltfl&auml;chen hinterlegen wir die folgenden Prozeduren:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdTitelNachLinks_Click()\r\n     ...\r\n     objChart.ChartTitle.<span style=\"color:blue;\">Left<\/span> = objChart.ChartTitle.<span style=\"color:blue;\">Left<\/span> - 10\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>cmdTitelNachRechts_Click()\r\n     ...\r\n     objChart.ChartTitle.<span style=\"color:blue;\">Left<\/span> = objChart.ChartTitle.<span style=\"color:blue;\">Left<\/span> + 10\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die erste verschiebt das Objekt mit der Beschriftung um zehn Schritte gegen&uuml;ber der vorherigen Position nach links, die zweite verschiebt es nach rechts.<\/p>\n<p><b>Legende bearbeiten<\/b><\/p>\n<p>In manchen Diagrammen ist eine Legende sinnvoll, in anderen nicht.<\/p>\n<p>Daher schauen wir uns zun&auml;chst an, wie Sie die Legende ein- und ausblenden k&ouml;nnen. Dazu legen wir ein passendes Kontrollk&auml;stchen namens <b>chkLegendeAnzeigen <\/b>an.<\/p>\n<p>Dieses f&uuml;llen wir, genau wie das Textfeld <b>txtTitel<\/b>, von nun an direkt beim &ouml;ffnen des Formulars, genau genommen in der Ereignisprozedur <b>Form_Load<\/b>, mit der aktuellen Einstellung des <b>Chart<\/b>-Objekts. Die Prozedur finden Sie in Listing 3.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Dim <\/span>objChart<span style=\"color:blue;\"> As <\/span>Chart\r\n     <span style=\"color:blue;\">Set<\/span> objChart = Me!ctlChart.Object\r\n     Me!txtTitel = objChart.ChartTitle.Caption\r\n     Me!chkLegendeAnzeigen = objChart.HasLegend\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Einlesen einiger Chart-Eigenschaften<\/span><\/b><\/p>\n<p>Das Kontrollk&auml;stchen <b>chkLegende <\/b>statten wir mit einer Prozedur aus, die durch das Ereignis <b>Nach Aktualisierung <\/b>ausgel&ouml;st wird:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>chkLegendeAnzeigen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>objChart<span style=\"color:blue;\"> As <\/span>Chart\r\n     <span style=\"color:blue;\">Set<\/span> objChart = Me!ctlChart.Object\r\n     objChart.HasLegend = Me!chkLegendeAnzeigen\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Mit dieser Prozedur k&ouml;nnen Sie durch einen einfachen Klick auf das Kontrollk&auml;stchen die Legende ein- und ausschalten &#8211; siehe Bild 9.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_009.png\" alt=\"Ein- und Ausblenden der Legende des Chart-Objekts per Kombinationsfeld\" width=\"575\" height=\"339,3578\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Ein- und Ausblenden der Legende des Chart-Objekts per Kombinationsfeld<\/span><\/b><\/p>\n<p><b>Weitere Eigenschaften der Legende<\/b><\/p>\n<p>Das <b>Legend<\/b>-Objekt bietet noch weitere Eigenschaften:<\/p>\n<ul>\n<li><b>Border<\/b>: Liefert Eigenschaften zum Einstellen des Rahmens<\/li>\n<li><b>Fill<\/b>: Objekt, mit dem Sie weitere Eigenschaften bez&uuml;glich des Aussehens festlegen k&ouml;nnen<\/li>\n<li><b>Font<\/b>: Liefert alle notwendigen Eigenschaften zum Einstellen der Schriftart<\/li>\n<li><b>Height<\/b>, <b>Width<\/b>: H&ouml;he und Breite der Legende<\/li>\n<li><b>Interior<\/b>: Legt die Eigenschaften des Hintergrunds fest.<\/li>\n<li><b>Left<\/b>, <b>Top<\/b>: Position der Legende<\/li>\n<li><b>Name<\/b>: Name des Objekts<\/li>\n<li><b>Parent<\/b>: Verweis auf das &uuml;bergeordnete Objekt<\/li>\n<li><b>Position<\/b>: Bestimmt die Position der Legende &#8211; Konstanten siehe unten<\/li>\n<li><b>Shadow<\/b>: Aktiviert oder deaktiviert einen Schatten.<\/li>\n<\/ul>\n<p>Die Konstanten f&uuml;r die Position des <b>Legend<\/b>-Objekt lauten:<\/p>\n<ul>\n<li><b>xlLegendPositionBottom<\/b>: <b>-4107<\/b><\/li>\n<li><b>xlLegendPositionCorner<\/b>: <b>2<\/b><\/li>\n<li><b>xlLegendPositionLeft<\/b>: <b>-4131<\/b><\/li>\n<li><b>xlLegendPositionRight<\/b>: <b>-4152<\/b><\/li>\n<li><b>xlLegendPositionTop<\/b>: <b>-4160<\/b><\/li>\n<li><b>xlLegendPositionCustom<\/b>: <b>-4161<\/b><\/li>\n<\/ul>\n<p><!--30percent--><\/p>\n<p><b>Vereinfachung f&uuml;r den Zugriff auf das Chart-Objekt<\/b><\/p>\n<p>F&uuml;r die folgenden Zugriffe auf das <b>Chart<\/b>-Objekt wollen wir einen Verweis auf das Objekt in der Variablen <b>m_Chart <\/b>speichern, die wir im Kopf des Klassenmoduls des Formulars anlegen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>m_Chart<span style=\"color:blue;\"> As <\/span>Chart<\/pre>\n<p>Die folgende Funktion <b>GetChart <\/b>liefert immer einen aktuellen Verweis auf das <b>Chart<\/b>-Objekt &#8211; egal, ob dieses bereits mit <b>m_Chart <\/b>referenziert ist oder nicht:<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>GetChart()<span style=\"color:blue;\"> As <\/span>Chart\r\n     <span style=\"color:blue;\">If <\/span>m_Chart Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> m_Chart = Me!ctlChart.Object\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> GetChart = m_Chart\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Auf diese Weise sparen wir uns bei den n&auml;chsten Beispielen die beiden folgenden Zeilen und greifen direkt mit <b>GetChart <\/b>auf das <b>Chart<\/b>-Objekt zu:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objChart<span style=\"color:blue;\"> As <\/span>Chart\r\n<span style=\"color:blue;\">Set<\/span> objChart = Me!ctlChart.Object<\/pre>\n<p><b>Weitere Vereinfachung f&uuml;r Experimente<\/b><\/p>\n<p>Wenn Sie mit dem <b>Chart<\/b>-Objekt experimentieren wollen, indem Sie seine Objekte, Eigenschaften und Methoden &uuml;ber den Direktbereich aufrufen, m&uuml;ssen Sie dieses normalerweise immer &uuml;ber den folgenden Ausdruck referenzieren:<\/p>\n<pre>Forms!frmDiagramme!ctlChart.Object<\/pre>\n<p>Der Nachteil ist: Sie erhalten dann keine IntelliSense-Unterst&uuml;tzung. Aber es spricht ja nichts dagegen, eine kleine &ouml;ffentliche Funktion in einem Standardmodul unterzubringen, die wie folgt aussieht:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>Chart()<span style=\"color:blue;\"> As <\/span>Chart\r\n     <span style=\"color:blue;\">Set<\/span> Chart = Forms!frmDiagramme!ctlChart.Object\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Die Funktion liefert zwar genau den gleichen Verweis wie &uuml;ber den direkten Zugriff, aber da Sie den Typ des R&uuml;ckgabewertes mit <b>Chart <\/b>festlegen k&ouml;nnen, wei&szlig; der VBA-Editor auch, welche Elemente er per IntelliSense f&uuml;r dieses Objekt anbieten soll.<\/p>\n<p>Gleiche Funktionen k&ouml;nnen Sie nat&uuml;rlich auch f&uuml;r weitere Elemente programmieren &#8211; zum Beispiel f&uuml;r den Zugriff auf die Legende des <b>Chart<\/b>-Objekts wie in folgendem Beispiel:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>Legend()<span style=\"color:blue;\"> As <\/span>Legend\r\n     <span style=\"color:blue;\">Set<\/span> Legend = Forms!frmDiagramme!ctlChart.Object.Legend\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b>Elemente ein- und ausblenden<\/b><\/p>\n<p>Mit den folgenden Eigenschaften des <b>Chart<\/b>-Objekts k&ouml;nnen Sie einzelne Elemente ein- und ausblenden:<\/p>\n<ul>\n<li><b>HasLegend<\/b>: Blendet die Legende ein und aus.<\/li>\n<li><b>HasTitle<\/b>: Blendet den Titel ein und aus.<\/li>\n<li><b>HasDataTable<\/b>: Blendet die zugrunde liegenden Werte wie in Bild 10 ein.<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_010.png\" alt=\"Diagramm mit DataTable\" width=\"400\" height=\"312,0806\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Diagramm mit DataTable<\/span><\/b><\/p>\n<li><b>HasAxis<\/b>: Pr&uuml;ft das Vorhandensein von Achsen oder blendet diese ein oder aus. Erwartet zwei Parameter: Achsentyp (<b>xlCategory <\/b>&#8211; <b>1<\/b>, <b>xlSeriesAxis <\/b>&#8211; <b>3 <\/b>oder <b>xlValue <\/b>&#8211; <b>2<\/b>) und Achsengruppe (<b>xlPrimary <\/b>&#8211; <b>1 <\/b>oder <b>XlSecondary <\/b>&#8211; <b>2<\/b>). Wenn Sie beispielsweise <b>.HasAxis(xlCategory, xlPrimary) = False <\/b>und <b>.HasAxis(xlValue, xlPrimary) = False <\/b>f&uuml;r das jeweilige <b>Chart<\/b>-Objekt einstellen, sieht das Diagramm wie in Bild 11 aus.<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_011.png\" alt=\"Diagramm ohne Achsen, Titel und Legende\" width=\"400\" height=\"312,0806\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Diagramm ohne Achsen, Titel und Legende<\/span><\/b><\/p>\n<\/ul>\n<p>Wenn Sie diese Elemente ein- oder ausblenden, passt sich in der Regel die Gr&ouml;&szlig;e des eigentlichen Diagramms so an, dass die &uuml;brigen Elemente dargestellt werden k&ouml;nnen.<\/p>\n<p><b>Eigenschaften der Achsen anpassen<\/b><\/p>\n<p>Schauen wir uns nun an, wie Sie die Achsen eines Diagramms per VBA anpassen k&ouml;nnen. Die Beispiele f&uuml;hren wir, dass dies unkomplizierter gelingt, direkt &uuml;ber das Direktfenster aus. Dazu definieren wir noch ein paar Hilfsfunktionen, &uuml;ber die wir direkt auf die entsprechenden Achsen zugreifen k&ouml;nnen. F&uuml;r die X-Achse sieht die entsprechende Funktion beispielsweise wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>XAchse()<span style=\"color:blue;\"> As <\/span>Axis\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> XAchse = Chart.Axes(xlCategory, xlPrimary)\r\n     <span style=\"color:blue;\">If <\/span>XAchse Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"X-Achse nicht definiert.\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>F&uuml;r die Y-Achse verwenden wir analog:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>YAchse()<span style=\"color:blue;\"> As <\/span>Axis\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> YAchse = Chart.Axes(xlValue, xlPrimary)\r\n     <span style=\"color:blue;\">If <\/span>YAchse Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Y-Achse nicht definiert.\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b>Achsen-Titel<\/b><\/p>\n<p>Damit k&ouml;nnen Sie im Direktfenster ganz einfach auf die Eigenschaften der Achsen zugreifen &#8211; beispielsweise, um zu ermitteln, ob diese einen Titel aufweisen, und diesen gegebenenfalls anzupassen. Ob ein Titel vorhanden ist, pr&uuml;fen Sie wie folgt &#8211; hier mit negativem Ergebnis:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> XAchse.HasTitle\r\nFalsch<\/pre>\n<p>Also aktivieren wir die Anzeige eines Titels f&uuml;r die X-Achse:<\/p>\n<pre>XAchse.HasTitle = <span style=\"color:blue;\">True<\/span><\/pre>\n<p>Nun erscheint die Standardbeschriftung <b>Achsentitel<\/b>. Diesen ersetzen wir wie folgt durch einen passenden Titel:<\/p>\n<pre>XAchse.AxisTitle.Caption = \"Artikel\"<\/pre>\n<p>Auf die gleiche Weise passen wir die Y-Achse an:<\/p>\n<pre>YAchse.HasTitle = <span style=\"color:blue;\">True<\/span>\r\nYAchse.AxisTitle.Caption = \"Einzelpreis\"<\/pre>\n<p><b>Achsentitel ausrichten<\/b><\/p>\n<p>Das Diagramm sieht nun wie in Bild 12 aus. Dummerweise nimmt der Titel der Y-Achse viel Platz ein &#8211; das Diagramm ist unn&ouml;tig klein. Zum Gl&uuml;ck k&ouml;nnen wir die Orientierung der Beschriftungen &auml;ndern &#8211; und zwar mit der Eigenschaft <b>Orientation <\/b>des <b>AxisTitle<\/b>-Objekts:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_012.png\" alt=\"Diagramm mit Achsen-Titel\" width=\"400\" height=\"312,0806\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Diagramm mit Achsen-Titel<\/span><\/b><\/p>\n<pre>YAchse.AxisTitle.Orientation = xlUpward<\/pre>\n<p>Diese Eigenschaft steht auch f&uuml;r die &uuml;brigen Achsen zur Verf&uuml;gung. Die g&uuml;ltigen Werte lauten:<\/p>\n<ul>\n<li><b>xlDownward <\/b>(<b>-4170<\/b>)<\/li>\n<li><b>xlHorizontal <\/b>(<b>-4128<\/b>)<\/li>\n<li><b>xlUpward <\/b>(<b>-4171<\/b>)<\/li>\n<li><b>xlVertical <\/b>(<b>-4166<\/b>)<\/li>\n<\/ul>\n<p>Das sieht schon viel besser aus &#8211; der Achsentitel wird nun aufw&auml;rts angezeigt (s. Bild 13). Ein Tipp: Um die Ver&auml;nderungen direkt beobachten zu k&ouml;nnen, positionieren Sie Access-Fenster und VBA-Editor nebeneinander und geben dann die entsprechenden Anweisungen im Direktbereich ein!<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_013.png\" alt=\"Gedrehter Achsen-Titel\" width=\"400\" height=\"312,0806\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Gedrehter Achsen-Titel<\/span><\/b><\/p>\n<p><b>Achsen-Koordinaten und Abmessungen<\/b><\/p>\n<p>Das <b>Axis<\/b>-Objekt bietet auch die Eigenschaften <b>Left<\/b>, <b>Width<\/b>, <b>Top <\/b>und <b>Height <\/b>an. Allerdings k&ouml;nnen Sie damit nur die aktuellen Werte ermitteln, diese aber nicht einstellen.<\/p>\n<p><b>Achsentyp und -kategorie<\/b><\/p>\n<p>Mit der Eigenschaft <b>Type <\/b>ermitteln Sie den Typ der Achse &#8211; dies gibt einen der Werte <b>xlPrimary <\/b>oder <b>XlSecondary<\/b> zur&uuml;ck. Mit <b>CategoryType <\/b>ermitteln Sie den Typ &#8211; also <b>xlCategory<\/b>, <b>xlSeriesAxis <\/b>oder <b>xlValue<\/b>.<\/p>\n<p><b>Kleinsten und gr&ouml;&szlig;ten Wert einer Achse ermitteln<\/b><\/p>\n<p>Wenn eine Achse numerische Werte anzeigt, k&ouml;nnen Sie mit den Eigenschaften <b>MinimumScale <\/b>und <b>Maximum-Scale <\/b>den kleinsten beziehungsweise gr&ouml;&szlig;ten Wert der Achse ermitteln. Bei Beschriftungen wie etwa den Artikelnamen gelingt dies nicht. Sie k&ouml;nnen die Werte auch anpassen &#8211; etwa, wenn Sie die Unterschiede deutlicher hervorheben m&ouml;chten. Im Beispiel w&uuml;rden wir etwa <b>MinimumScale<\/b> auf einen gr&ouml;&szlig;eren Wert setzen:<\/p>\n<pre>YAchse.MinimumScale = 4<\/pre>\n<p>Dies wirkt sich wie in Bild 14 aus. Standardm&auml;&szlig;ig wird dieser Wert automatisch ermittelt. Um dies wiederherzustellen, verwenden Sie die beiden Eigenschaften  <b>MinimumScaleIsAuto <\/b>und <b>MaximumScaleIsAuto <\/b>&#8211; zum Beispiel so:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_014.png\" alt=\"Neuer minimaler Wert f&uuml;r die Y-Achse\" width=\"400\" height=\"312,0806\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 14: Neuer minimaler Wert f&uuml;r die Y-Achse<\/span><\/b><\/p>\n<pre>YAchse.MinimumScaleIsAuto = <span style=\"color:blue;\">True<\/span><\/pre>\n<p>Mit diesen Eigenschaften steht auch die Eigenschaft <b>Crosses-At <\/b>in Zusammenhang. Damit ermitteln Sie f&uuml;r das jeweilige <b>Axis<\/b>-Objekt, an welchem Wert die entsprechende Achse die andere Achse schneidet. Wenn Sie <b>Minimum-Scale <\/b>f&uuml;r die Y-Achse auf <b>4 <\/b>eingestellt haben, erhalten Sie diesen Wert standardm&auml;&szlig;ig auch f&uuml;r die Eigenschaft <b>CrossesAt<\/b>.<\/p>\n<p>Sie k&ouml;nnen <b>CrossesAt <\/b>aber auch anpassen &#8211; dies bietet sich beispielsweise f&uuml;r die Anzeige positiver und negativer Werte auf der Y-Achse an (was in diesem Beispiel leider keinen Sinn macht). Wenn Sie so Werte zwischen <b>-10 <\/b>und <b>10 <\/b>anzeigen m&ouml;chten, stellen Sie <b>MinimumScale <\/b>auf <b>-10<\/b>, <b>MaximumScale <\/b>auf <b>10 <\/b>und <b>CrossesAt <\/b>auf <b>0 <\/b>ein.<\/p>\n<p><b>Achsmarkierungen<\/b><\/p>\n<p>Auch die Striche, welche die einzelnen Werte der Achse markieren, k&ouml;nnen Sie anpassen. Zun&auml;chst lassen sich mit den Eigenschaften <b>MinorTickMark <\/b>und <b>MajorTickMark <\/b>die Positionen der Markierungen und Zwischenmarkierungen festlegen. Es gibt die folgenden Werte f&uuml;r diese beiden Eigenschaften:<\/p>\n<ul>\n<li><b>xlTickMarkCross <\/b>(<b>4<\/b>)<\/li>\n<li><b>xlTickMarkInside <\/b>(<b>2<\/b>)<\/li>\n<li><b>xlTickMarkNone <\/b>(<b>-4142<\/b>)<\/li>\n<li><b>xlTickMarkOutside <\/b>(<b>3<\/b>)<\/li>\n<\/ul>\n<p><b>Gitter im Diagramm<\/b><\/p>\n<p>Auch die Linien beziehungsweise Gitter im Diagramm lassen sich nach Wunsch ein- und ausschalten. Es gibt Haupt- und Nebenlinien f&uuml;r jede Achse. Mit den folgenden beiden Eigenschaften fragen Sie ab, ob diese vorhanden sind, und blenden diese durch die entsprechende Einstellung ein und aus:<\/p>\n<ul>\n<li><b>HasMajorGridlines<\/b><\/li>\n<li><b>HasMinorGridlines<\/b><\/li>\n<\/ul>\n<p>Wenn Sie im Beispiel die Hauptlinien parallel zur X-Achse ausblenden m&ouml;chten, verwenden Sie die folgende Anweisung:<\/p>\n<pre>YAchse.HasMajorGridlines = <span style=\"color:blue;\">False<\/span><\/pre>\n<p>Das Einblenden gelingt dann so:<\/p>\n<pre>YAchse.HasMajorGridlines = <span style=\"color:blue;\">True<\/span><\/pre>\n<p>Sie k&ouml;nnen auch die Eigenschaften der Linien einstellen. Dazu verwenden Sie die beiden folgenden Objekte des <b>Axis<\/b>-Objekts:<\/p>\n<ul>\n<li><b>MajorGridlines<\/b><\/li>\n<li><b>MinorGridlines<\/b><\/li>\n<\/ul>\n<p>Diese bieten auch die M&ouml;glichkeit zum Entfernen der Linien an:<\/p>\n<pre>YAchse.MajorGridlines.Delete<\/pre>\n<p>Ein weiteres Objekt von <b>MajorGridlines <\/b>und <b>MinorGridlines <\/b>hei&szlig;t <b>Border<\/b>. Mit seinen Eigenschaften stellen Sie beispielsweise die Liniendicke ein. Der Wert <b>1 <\/b>f&uuml;r die Eigenschaft <b>Width <\/b>liefert wesentlich dezentere Linien:<\/p>\n<pre>YAchse.MajorGridlines.Border.Weight = 1<\/pre>\n<p>Dem sollten Sie dann auch die Dicke der Markierungslinien angleichen &#8211; was allerdings nur gleichzeitig zur Dicke der Achsen selbst gelingt (Ergebnis s. Bild 15):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_015.png\" alt=\"Diagramm mit d&uuml;nnen Achsen\" width=\"450\" height=\"289,2857\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 15: Diagramm mit d&uuml;nnen Achsen<\/span><\/b><\/p>\n<pre>YAchse.Border.Weight = 1\r\nXAchse.Border.Weight = 1<\/pre>\n<p><b>Position der Markierungen<\/b><\/p>\n<p>Die Position der Markierungen (also die Abst&auml;nde) stellen Sie mit den beiden Eigenschaften <b>MajorUnit<\/b> und <b>Minor-Unit <\/b>ein. F&uuml;r einen Wert von <b>2 <\/b>f&uuml;r die Eigenschaft <b>MajorUnit <\/b>zeigt das Diagramm also f&uuml;r jeden zweiten Wert eine Beschriftung, eine Markierung und eine Linie an.<\/p>\n<p><b>Beschriftung der Achsen<\/b><\/p>\n<p>Bei der Beschriftung der X-Achse in unserem Beispiel f&auml;llt gegen&uuml;ber der Beschriftung der Y-Achse auf, dass erstere Texte zwischen den Markierungen erscheinen und letztere genau an den Markierungen.<\/p>\n<p>Diese Position legen Sie mit der Eigenschaft <b>AxisBetweenCategories <\/b>fest. F&uuml;r die Y-Achse in unserem Beispiel k&ouml;nnen Sie diese Eigenschaft nicht verwenden.<\/p>\n<p><b>Position der Beschriftung<\/b><\/p>\n<p>Mit der Eigenschaft <b>TickLabelPosition<\/b> stellen Sie ein, wo sich die Beschriftungen befinden. Im Falle der X-Achse und der Y-Achse haben die einzelnen Werte diese Bedeutung:<\/p>\n<ul>\n<li><b>xlTickLabelPositionHigh <\/b>(<b>-4127<\/b>): X-Achse: &uuml;ber dem Diagramm\/Y-Achse: links vom Diagramm<\/li>\n<li><b>xlTickLabelPositionLow <\/b>(<b>-4134<\/b>): unter dem Diagramm\/rechts vom Diagramm<\/li>\n<li><b>xlTickLabelPositionNextToAxis <\/b>(<b>4<\/b>): unter der Achse\/links von der Achse<\/li>\n<li><b>xlTickLabelPositionNone <\/b>(<b>-4142<\/b>): keine Beschriftung\/keine Beschriftung<\/li>\n<\/ul>\n<p><b>Aussehen der Achsenbeschriftung<\/b><\/p>\n<p>Das Aussehen der Schriftart f&uuml;r die Beschriftung der Achsen stellen Sie &uuml;ber das Objekt <b>TickLabels <\/b>des <b>Axis<\/b>-Objekts ein.<\/p>\n<p>Dieses bietet beispielsweise das Objekt <b>Font <\/b>an, mit dessen Eigenschaften sich etwa die Schriftart anpassen l&auml;sst:<\/p>\n<pre>YAchse.TickLabels.Font.Name = \"Calibri\"\r\nYAchse.TickLabels.Font.Bold = <span style=\"color:blue;\">False<\/span>\r\nYAchse.TickLabels.Font.Color = &h0\r\nYAchse.TickLabels.Font.Size = 7<\/pre>\n<p><b>Beschriftungen auslassen<\/b><\/p>\n<p>Wenn es der Platz nicht zul&auml;sst, kann man Beschriftungen auslassen. In unserem Beispiel gelingt dies nur f&uuml;r die X-Achse. Wenn die Eigenschaft <b>TickLabelSpacing <\/b>den Wert <b>1 <\/b>aufweist, zeigt das Diagramm alle Beschriftungen an. Wenn es beispielsweise nur zu jedem zweiten Eintrag der X-Achse eine Beschriftung liefern soll, stellen Sie <b>TickLabelSpacing <\/b>etwa wie folgt auf den Wert <b>2 <\/b>ein:<\/p>\n<pre>XAchse.TickLabelSpacing = 2<\/pre>\n<p>Mit der Eigenschaft <b>TickMarkSpacing <\/b>hingegen legen Sie fest, jede wievielte Markierung auf der X-Achse angezeigt werden soll. F&uuml;r die Anzeige aller Striche wenden Sie folgende Anweisung an:<\/p>\n<pre>XAchse.TickMarkSpacing = 1<\/pre>\n<p><b>Bruchteile anzeigen<\/b><\/p>\n<p>Sollten Sie f&uuml;r die Zahlen einer Achse wie hier der Y-Achse die Kommastelle verschieben wollen, verwenden Sie die Eigenschaft <b>DisplayUnit<\/b>. Diese kann die folgenden Werte annehmen:<\/p>\n<ul>\n<li><b>xlHundreds<\/b> (<b>-2<\/b>)<\/li>\n<li><b>xlThousands <\/b>(<b>-3<\/b>)<\/li>\n<li><b>xlTenThousands <\/b>(<b>-4<\/b>)<\/li>\n<li><b>xlHundredThousands <\/b>(<b>-5<\/b>)<\/li>\n<li><b>xlMillions <\/b>(<b>-6<\/b>)<\/li>\n<li><b>xlTenMillions <\/b>(<b>-7<\/b>)<\/li>\n<li><b>xlHundredMillions <\/b>(<b>-8<\/b>)<\/li>\n<li><b>xlThousandMillions <\/b>(<b>-9<\/b>)<\/li>\n<li><b>xlMillionMillions <\/b>(<b>-10<\/b>)<\/li>\n<\/ul>\n<p>Die folgende Anweisung, die den Wert <b>xlHundreds<\/b> nutzt, sorgt beispielsweise f&uuml;r die Darstellung aus Bild 16:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_016.png\" alt=\"Anpassung der Kommastelle\" width=\"575\" height=\"369,6429\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 16: Anpassung der Kommastelle<\/span><\/b><\/p>\n<pre>YAchse.DisplayUnit=xlHundreds<\/pre>\n<p>Aber wie erhalten Sie die Standard-einstellung wieder zur&uuml;ck Die erste M&ouml;glichkeit ist dieser Wert:<\/p>\n<pre>YAchse.DisplayUnit=-4142<\/pre>\n<p>Die zweite ist die Eigenschaft <b>DisplayUnitCustom<\/b>. Diese nimmt den Faktor entgegen, durch den die angezeigten Werte geteilt werden sollten &#8211; hier sind also auch andere Faktoren als die oben genannten m&ouml;glich. Die folgende Einstellung liefert die Originalwerte:<\/p>\n<pre>YAchse.DisplayUnitCustom  = 1<\/pre>\n<p><b>Einheiten<\/b><\/p>\n<p>Wenn Sie die Einheiten f&uuml;r eine Achse &#8211; in diesem Fall die Y-Achse &#8211; anpassen m&ouml;chten, stellen Sie zun&auml;chst die Eigenschaft <b>HasDisplayUnitLabel <\/b>an:<\/p>\n<pre>YAchse.HasDisplayUnitLabel = <span style=\"color:blue;\">True<\/span><\/pre>\n<p>Danach k&ouml;nnen Sie die Einheiten-Beschriftung einstellen, und zwar &uuml;ber die Eigenschaften des Objekts <b>DisplayUnitLabel<\/b>.<\/p>\n<p>Wenn Sie als Einheit der Y-Achse den Text <b>[EUR]<\/b> anzeigen lassen m&ouml;chten, verwenden Sie diese Anweisung:<\/p>\n<pre>YAchse.DisplayUnitLabel.Caption = \"[EUR]\"<\/pre>\n<p>Das Ergebnis finden Sie in Bild 17. Ausrichtung, Schriftart et cetera stellen Sie ebenfalls &uuml;ber die Eigenschaften des <b>DisplayUnitLabel<\/b>-Objekts ein.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_017.png\" alt=\"Einblenden der Einheit\" width=\"575\" height=\"369,6429\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 17: Einblenden der Einheit<\/span><\/b><\/p>\n<p><b>Chart auf links ziehen<\/b><\/p>\n<p>Wenn Sie die Eigenschaft <b>ReversePlot-Order <\/b>auf <b>True <\/b>einstellen, baut Access das Diagramm in umgekehrter Reihenfolge auf.<\/p>\n<p><b>Position des Diagramms im Chart-Objekt<\/b><\/p>\n<p>Wenn Sie die Position des Diagramms im Chart-Objekt &auml;ndern m&ouml;chten, k&ouml;nnen Sie die Eigenschaften <b>Top <\/b>und <b>Left <\/b>des <b>PlotArea<\/b>-Objekts verwenden, das Sie &uuml;ber die gleichnamige Eigenschaft des <b>Chart<\/b>-Objekts erhalten &#8211; zum Beispiel wie in der folgenden Anweisung:<\/p>\n<pre>Chart.PlotArea.<span style=\"color:blue;\">Left<\/span> = 0<\/pre>\n<p><b>Diagramm-Elemente referenzieren<\/b><\/p>\n<p>Die Diagramm-Elemente, hier die einzelnen Balken, referenzieren Sie &uuml;ber die entsprechenden Datenreihen. Das Balkendiagramm aus unserem Beispiel verwendet nur eine einzige Datenreihe. Dies erfahren Sie &uuml;ber die <b>Count<\/b>-Eigenschaft der <b>SeriesCollection<\/b>-Auflistung des <b>Chart<\/b>-Objekts:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> Chart.SeriesCollection.Count<\/pre>\n<p>Eine einzelne Datenreihe referenzieren Sie &uuml;ber den Index des <b>SeriesCollection<\/b>-Objekts. Wir haben eine kleine Funktion zur Beispieldatenbank hinzugef&uuml;gt, mit der wir direkt auf die einzige Datenreihe zugreifen &#8211; und damit auch IntelliSense nutzen k&ouml;nnen:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>Series1()<span style=\"color:blue;\"> As <\/span>Series\r\n     <span style=\"color:blue;\">Set<\/span> Series1 = Chart.SeriesCollection(1)\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b>Elemente im Diagramm formatieren<\/b><\/p>\n<p>Nun k&uuml;mmern wir uns noch um die Gestaltung der Objekte im Diagramm selbst, hier am Beispiel der Balken. Was wollen wir dort &auml;ndern Zum Beispiel die Hintergrundfarbe der einzelnen Elemente oder ihre Rahmenfarbe.<\/p>\n<p>Die folgende Anweisung stellt die Rahmenfarbe auf Wei&szlig; ein:<\/p>\n<pre>Series1.Border.Color = &hffffff<\/pre>\n<p>Zus&auml;tzlich soll die Hintergrundfarbe als freundliches Grau dargestellt werden:<\/p>\n<pre>Series1.Interior.Color = &hcccccc<\/pre>\n<p>Das Ergebnis sieht wie in Bild 18 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_018.png\" alt=\"&auml;ndern der Farben der Balken\" width=\"575\" height=\"411,5897\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 18: &auml;ndern der Farben der Balken<\/span><\/b><\/p>\n<p><b>Zahlen zu Balken hinzuf&uuml;gen<\/b><\/p>\n<p>Wenn Sie m&ouml;chten, dass etwa wie in Bild 19 die Werte der jeweiligen Balken &uuml;ber den Balken angezeigt werden, k&ouml;nnen Sie die Eigenschaft <b>HasDataLabels <\/b>auf <b>True <\/b>einstellen:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_937_019.png\" alt=\"Einblenden der Zahlenwerte f&uuml;r die Balken\" width=\"575\" height=\"411,5897\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 19: Einblenden der Zahlenwerte f&uuml;r die Balken<\/span><\/b><\/p>\n<pre>Chart.SeriesCollection(1).HasDataLabels = <span style=\"color:blue;\">True<\/span><\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Auch wenn dies schon recht umfangreich aussieht: Dieser Beitrag kratzt nur an den Einstellungsm&ouml;glichkeiten f&uuml;r das <b>Chart<\/b>-Objekt. Sie k&ouml;nnen mit den hier beschriebenen Techniken nun die wichtigsten Einstellungen bez&uuml;glich der Formatierung vornehmen.<\/p>\n<p>Dabei haben wir uns noch nicht einmal darum gek&uuml;mmert, wie Sie die Datenherkunft optimal gestalten und wie Sie diese anpassen k&ouml;nnen &#8211; dies erledigen wir in einem sp&auml;teren Beitrag.<\/p>\n<p>Auch die verschiedenen Diagrammtypen haben wir im vorliegenden Beitrag noch nicht gew&uuml;rdigt, sondern uns zun&auml;chst auf das einfache Balkendiagramm beschr&auml;nkt &#8211; die Anwendung der hier vorgestellten Eigenschaften auf die &uuml;brigen Diagrammtypen wirkt sich teilweise anders aus.<\/p>\n<p>Eine wichtige Erkenntnis ist: Viele Einstellungen beeinflussen andere Elemente des Diagramms, so wird beispielsweise das Diagramm selbst kleiner, wenn Sie Elemente wie Achsentitel oder eine Legende hinzuf&uuml;gen.<\/p>\n<p>Dank VBA lassen sich viele Einstellungen, die man sonst m&uuml;hsam &uuml;ber die Benutzeroberfl&auml;che vornimmt, auf einen Schlag erledigen.<\/p>\n<p>In weiteren Beitr&auml;gen schauen wir uns an, wie Sie das <b>Chart<\/b>-Objekt f&uuml;r die Darstellung spezieller Daten nutzen k&ouml;nnen. Wenn Sie W&uuml;nsche oder Anregungen dazu haben &#8211; einfach per E-Mail an <b>info@access-im-unternehmen.de <\/b>senden!<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DiagrammePerVBA.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{FC534A71-4F79-4B1A-9106-EA9D3ACC311B}\/aiu_937.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Access bietet mit Microsoft Graph die M&ouml;glichkeit, Daten in Diagrammen darzustellen. Dieses Diagramm k&ouml;nnen Sie &uuml;ber den Assistenten mit Daten f&uuml;llen. &Uuml;blicherweise m&uuml;ssen Sie dann aber noch an einigen Schrauben drehen, damit das Diagramm Ihren Anforderungen entspricht &#8211; zum Beispiel, um den Inhalt und die Formatierung von Beschriftungen anzupassen. Das Graph-Objekt k&ouml;nnen Sie allerdings auch per VBA steuern &#8211; wie das gelingt, zeigt der vorliegende Beitrag.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662014,66032014,44000024],"tags":[],"class_list":["post-55000937","post","type-post","status-publish","format-standard","hentry","category-662014","category-66032014","category-Berichte_und_Reporting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Diagramme formatieren per VBA - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Diagramme formatieren per VBA\" \/>\n<meta property=\"og:description\" content=\"Access bietet mit Microsoft Graph die M&ouml;glichkeit, Daten in Diagrammen darzustellen. Dieses Diagramm k&ouml;nnen Sie &uuml;ber den Assistenten mit Daten f&uuml;llen. &Uuml;blicherweise m&uuml;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&ouml;nnen Sie allerdings auch per VBA steuern - wie das gelingt, zeigt der vorliegende Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:27:02+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/97001b1d05c942be8513361ea20d99a4\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"19\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Diagramme formatieren per VBA\",\"datePublished\":\"2020-05-22T21:27:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/\"},\"wordCount\":3393,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/97001b1d05c942be8513361ea20d99a4\",\"articleSection\":[\"2014\",\"3\\\/2014\",\"Berichte und Reporting\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/\",\"name\":\"Diagramme formatieren per VBA - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/97001b1d05c942be8513361ea20d99a4\",\"datePublished\":\"2020-05-22T21:27:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/97001b1d05c942be8513361ea20d99a4\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/97001b1d05c942be8513361ea20d99a4\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Diagramme_formatieren_per_VBA\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Diagramme formatieren per VBA\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Diagramme formatieren per VBA - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/","og_locale":"de_DE","og_type":"article","og_title":"Diagramme formatieren per VBA","og_description":"Access bietet mit Microsoft Graph die M&ouml;glichkeit, Daten in Diagrammen darzustellen. Dieses Diagramm k&ouml;nnen Sie &uuml;ber den Assistenten mit Daten f&uuml;llen. &Uuml;blicherweise m&uuml;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&ouml;nnen Sie allerdings auch per VBA steuern - wie das gelingt, zeigt der vorliegende Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:27:02+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/97001b1d05c942be8513361ea20d99a4","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"19\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Diagramme formatieren per VBA","datePublished":"2020-05-22T21:27:02+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/"},"wordCount":3393,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/97001b1d05c942be8513361ea20d99a4","articleSection":["2014","3\/2014","Berichte und Reporting"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/","url":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/","name":"Diagramme formatieren per VBA - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/97001b1d05c942be8513361ea20d99a4","datePublished":"2020-05-22T21:27:02+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/97001b1d05c942be8513361ea20d99a4","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/97001b1d05c942be8513361ea20d99a4"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Diagramme_formatieren_per_VBA\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Diagramme formatieren per VBA"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000937"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000937\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}