{"id":55001184,"date":"2019-04-01T00:00:00","date_gmt":"2020-05-13T21:06:49","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1184"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Wertebereiche_in_Diagrammen_per_VBA_einstellen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/","title":{"rendered":"Wertebereiche in Diagrammen per VBA einstellen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/c8df2ac85398433d8e9a609f26b92c71\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Die neuen Diagramme unter Access 2019 und aktuellen Versionen von Office 365 bieten eine moderne Darstellung von Daten. Dem Benutzer bleiben die M&ouml;glichkeiten der Anpassung der angezeigten Daten jedoch verwehrt, wenn er nicht gerade in den Entwurf des Formulars oder Berichts mit dem Diagramm eingreift. Also bieten wir ihm die M&ouml;glichkeit, verschiedene Aspekte der Darstellung &uuml;ber von uns bereitgestellte Steuer-elemente nach seinen W&uuml;nschen anzupassen. Im vorliegenden Beitrag schauen wir uns dabei die Wertebereiche von Diagrammen f&uuml;r die prim&auml;re und sekund&auml;re y-Achse an.<\/b><\/p>\n<h2>Benutzern das Anpassen der Diagramme erm&ouml;glichen<\/h2>\n<p>Der Benutzer sollte in der Regel keine Gelegenheit erhalten, in den Entwurf von Formularen einzugreifen. Damit hat er aber leider auch keine M&ouml;glichkeit, die Ansicht der Diagramme anzupassen.<\/p>\n<p>Hier kommt VBA ins Spiel. Sie k&ouml;nnen mit geeigneten Steuerelementen die Werte, die f&uuml;r die verschiedenen Eigenschaften des Diagramm-Steuerelements eingestellt wurden, anzeigen und zur Bearbeitung anbieten. Die grundlegenden Einstellungen wie etwa die gew&auml;hlte Diagrammart oder die Datensatzherkunft sollte man nicht bearbeiten lassen, da dies unter Umst&auml;nden zu viele Gelegenheiten mit sich bringt, ein unerw&uuml;nschtes Ergebnis zu produzieren. Also beschr&auml;nken wir uns zu Beispielzwecken mit einigen wenigen Einstellungen.<\/p>\n<h2>Beispieldiagramm<\/h2>\n<p>F&uuml;r dieses Beispiel verwenden wir ein Diagramm, dass die Daten der Tabelle <b>tblUmsaetzeUndRabattNachMonat <\/b>anzeigt. Dazu stellen Sie die Eigenschaft <b>Diagrammtyp <\/b>auf <b>Linien <\/b>und <b>Datensatzherkunft <\/b>auf den Namen der Tabelle ein.<\/p>\n<p>Im Bereich <b>Diagrammeinstellungen|Daten <\/b>legen wir f&uuml;r die Anzeige auf der y-Achse die beiden Felder <b>Umsatz (Summe) <\/b>und <b>Rabatt (Summe) <\/b>fest (siehe Bild 1), indem wir die entsprechenden Kontrollk&auml;stchen aktivieren.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_02\/pic_1184_001.png\" alt=\"Auswahl der Felder f&uuml;r die Werte der y-Achse\" width=\"499,6607\" height=\"378,2988\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Auswahl der Felder f&uuml;r die Werte der y-Achse<\/span><\/b><\/p>\n<p>Die angezeigten Texte f&uuml;r den Diagrammtitel und die Legendenbeschriftung stellen wir &uuml;ber die Eigenschaften <b>Diagrammtitel <\/b>(im Eigenschaftenblatt) sowie <b>Anzeigename <\/b>(im Bereich <b>Diagrammeinstellungen|Format<\/b>) ein.<\/p>\n<p>Au&szlig;erdem m&ouml;chten wir noch die sekund&auml;re y-Achse einblenden. Das erledigen wir, indem wir die Eigenschaft <b>Datenreihe zeichnen auf <\/b>im Bereich <b>Diagrammeinstellungen|Format <\/b>f&uuml;r die Datenreihe <b>SumOfRabatt <\/b>auf den Wert <b>Sekund&auml;r <\/b>einstellen.<\/p>\n<p>Schlie&szlig;lich w&uuml;nschen wir uns noch Beschriftungen der beiden y-Achsen. Dazu tragen wir f&uuml;r die Eigenschaft <b>Titel der prim&auml;ren Gr&ouml;&szlig;enachse <\/b>den Wert <b>Umsatz <\/b>und f&uuml;r <b>Titel der sekund&auml;ren Gr&ouml;&szlig;enachse <\/b>den Wert <b>Rabatt <\/b>ein.<\/p>\n<p>Das Ergebnis sieht nun wie in Bild 2 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_02\/pic_1184_002.png\" alt=\"Diagramm ohne Benutzereinstellungen\" width=\"499,6607\" height=\"415,4961\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Diagramm ohne Benutzereinstellungen<\/span><\/b><\/p>\n<h2>Minimale und maximale Werte f&uuml;r y-Achse automatisch einstellen<\/h2>\n<p>Nun wollen wir dem Benutzer die M&ouml;glichkeit geben, die Bereiche f&uuml;r die prim&auml;re und die sekund&auml;re y-Achse einzustellen. Normalerweise sind hier die beiden Eigenschaften <b>PrimaryValuesAxisRange<\/b> und <b>SecondaryValuesAxisRange <\/b>auf den Wert <b>acAxisRangeAuto <\/b>f&uuml;r <b>Automatisch <\/b>eingestellt.<\/p>\n<p>Wenn wir dem Benutzer die M&ouml;glichkeit geben wollen, diese Werte manuell einzustellen, m&uuml;ssen wir diese beiden Eigenschaften zun&auml;chst auf den Wert <b>acAxisRangeFixed <\/b>einstellen. Die weiteren beiden Eigenschaften je y-Achse hei&szlig;en <b>PrimaryValuesAxisMinimum <\/b>und <b>PrimaryValuesAxisMaximum <\/b>sowie <b>SecondaryValuesAxisMinimum <\/b>und <b>SecondaryValuesAxisMaximum<\/b>. Mit diesen stellen wir den Startwert und den Endwert f&uuml;r den anzuzeigenden Wertebereich ein.<\/p>\n<p>Die Idee ist, dem Benutzer ausgehend von der automatischen Anzeige der Bereiche die M&ouml;glichkeit zu bieten, die Ober- und die Untergrenze f&uuml;r den Wertebereich manuell einzutragen. Oder er kann durch das Bet&auml;tigen eines Steuerelements den aktuellen Wertebereich ermitteln und einstellen lassen. <\/p>\n<p>Wir entscheiden uns, f&uuml;r den Wert der Eigenschaft <b>PrimaryValuesAxisRange <\/b>eine Optionsgruppe zum Formular hinzuzuf&uuml;gen, der wir den Namen <b>ogrPrimaerWertebereich <\/b>geben. F&uuml;r diese Optionsgruppe stellen wir den Standardwert auf <b>0 <\/b>ein (was der Konstanten <b>acAxisRangeAuto <\/b>entspricht).<\/p>\n<p>Der Optionsgruppe f&uuml;gen wir dann zwei Optionsfelder hinzu, denen wir die Werte <b>0 <\/b>und <b>1 <\/b>zuweisen und die wir mit <b>Automatisch <\/b>und <b>Manuell <\/b>beschriften. Die zweite Optionsgruppe f&uuml;r den Wertebereich der sekund&auml;ren y-Achse erstellen wir auf die gleiche Weise, vergeben aber den Namen <b>ogrSekundaerWertebereich<\/b>. <\/p>\n<p>un ben&ouml;tigen wir noch vier Textfelder, welche die minimalen und maximalen Werte f&uuml;r die prim&auml;re und die sekund&auml;re y-Achse aufnehmen. Diese platzieren wir unter der Optionsgruppe und so, dass die Felder f&uuml;r die prim&auml;re Achse links und die f&uuml;r die sekund&auml;re Achse rechts erscheinen. Das Formular sieht nun wie in Bild 3 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_02\/pic_1184_003.png\" alt=\"Entwurf des Formulars mit Steuerelementen f&uuml;r die Eigenschaften\" width=\"499,6607\" height=\"583,707\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Entwurf des Formulars mit Steuerelementen f&uuml;r die Eigenschaften<\/span><\/b><\/p>\n<h2>Steuer-elemente programmieren<\/h2>\n<p>Nun wollen wir die Steuer-elemente mit Funktion f&uuml;llen. Als Erstes sorgen wir daf&uuml;r, dass die Optionsgruppe den richtigen Wert enth&auml;lt. Diesen lesen wir aus der entsprechenden Eigenschaft aus und weisen ihn in der Ereignisprozedur <b>Beim Laden <\/b>des Formulars zu:<\/p>\n<p>Hier rufen wir gleichzeitig eine Prozedur namens <b>TextfelderAktivieren <\/b>auf:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     Me!ogrPrimaerWertebereich =  Me!ctlMinMax.PrimaryValuesAxisRange\r\n     Me!ogrSekundaerWertebereich =  Me!ctlMinMax.SecondaryValuesAxisRange\r\n     TextfelderAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese Prozedur pr&uuml;ft, ob die Wertebereiche automatisch ermittelt werden sollen oder nicht.<\/p>\n<p>Falls nicht, sollen die Textfelder zur manuellen Eingabe der kleinsten und gr&ouml;&szlig;ten Werte aktiviert werden. Das erledigen die vier Anweisungen der Prozedur wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>TextfelderAktivieren()\r\n     Me!txtPrimaerMax.Enabled =  Me!ogrPrimaerWertebereich = 1\r\n     Me!txtPrimaerMin.Enabled =  Me!ogrPrimaerWertebereich = 1\r\n     Me!txtSekundaerMax.Enabled =  Me!ogrSekundaerWertebereich = 1\r\n     Me!txtSekundaerMin.Enabled =  Me!ogrSekundaerWertebereich = 1\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wenn der Benutzer den Wert einer der beiden Optionsgruppen &auml;ndert, also m&ouml;chte, dass die Wertebereiche entweder automatisch festgelegt werden oder manuell, weisen wir der entsprechenden Eigenschaft des Diagramms, also <b>PrimaryValuesAxisRange <\/b>oder <b>SecondaryValuesAxisRange<\/b>, den entsprechenden Wert der jeweiligen Optionsgruppe zu.<\/p>\n<p>Au&szlig;erdem rufen wir dann erneut die Prozedur <b>TextfelderAktivieren <\/b>auf, um diese zu aktivieren oder deaktivieren:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>ogrPrimaerWertebereich_AfterUpdate()\r\n     Me!ctlMinMax.PrimaryValuesAxisRange =  Me!ogrPrimaerWertebereich\r\n     TextfelderAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>ogrSekundaerWertebereich_AfterUpdate()\r\n     Me!ctlMinMax.SecondaryValuesAxisRange =  Me!ogrSekundaerWertebereich\r\n     TextfelderAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit haben wir allerdings noch nicht viel erreicht, denn wir blenden so nur die Zahlenwerte an der prim&auml;ren und sekund&auml;ren y-Achse ein und aus.<\/p>\n<h2>Kleinsten und gr&ouml;&szlig;ten Wert vorbelegen<\/h2>\n<p>Damit der Benutzer Standardwerte f&uuml;r die Wertebereiche hat, m&uuml;ssen wir diese entsprechend berechnen. Das k&ouml;nnen wir nur n&auml;herungsweise so tun, wie es das Diagramm-Steuerelement im automatischen Modus tut, da wir ja den dort verwendeten Algorithmus nicht kennen. Also wollen wir den gr&ouml;&szlig;ten und den kleinsten Wert ermitteln und einen bestimmten Prozentsatz aufschlagen, damit der gr&ouml;&szlig;te Wert nicht gerade ganz oben auf der jeweiligen y-Achse angezeigt wird.<\/p>\n<p>Wir aber k&ouml;nnen wir diese Werte berechnen Normalerweise ist das einfach, da wir ja wissen, welche Datensatzherkunft wir eingestellt haben und welche Felder f&uuml;r die Darstellung der Werte verwendet werden. Aber wir wollen die L&ouml;sung so gestalten, dass wir auch einmal die Datensatzherkunft wechseln und unsere L&ouml;sung immer noch verwenden k&ouml;nnen. Also schauen wir uns an, welche M&ouml;glichkeiten die Eigenschaften bieten, um die gr&ouml;&szlig;ten und kleinsten Werte der jeweiligen y-Achse zu berechnen.<\/p>\n<p><!--30percent--><\/p>\n<p>Dabei sto&szlig;en wir schnell auf die Eigenschaften der Datenreihen, wo wir Bezeichnungen wie <b>SumOfUmsatz <\/b>oder <b>SumOfRabatt <\/b>finden. Diese werden interessanterweise auch in dem Ausdruck f&uuml;r die Eigenschaft <b>Transformierte Datensatzherkunft <\/b>verwendet, die in unserem Fall wie folgt aussieht:<\/p>\n<pre>SELECT [Monat], Sum([Umsatz]) AS [SumOfUmsatz], Sum([Rabatt]) AS [SumOfRabatt] FROM [tblUmsaetzeUndRabattNachMonat] GROUP BY [Monat] ORDER BY [Monat]<\/pre>\n<p>Und wir wissen, dass die auf den beiden y-Achsen aufgetragenen Werte <b>SumOfUmsatz <\/b>und <b>SumOfRabatt <\/b>hei&szlig;en. Daraus k&ouml;nnen wir dann durch geschicktes Formulieren einer Abfrage zum Beispiel wie folgt den maximalen Wert f&uuml;r <b>SumOfUmsatz <\/b>ermitteln &#8211; hier f&uuml;r die Ausgabe im Direktfenster:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> CurrentDb.OpenRecordset(\"SELECT Max(SumOfUmsatz) FROM (SELECT [Monat], &quot; _\r\n    &amp; &quot;Sum([Umsatz]) AS [SumOfUmsatz], Sum([Rabatt]) AS [SumOfRabatt] &quot; _\r\n    &amp; &quot;FROM [tblUmsaetzeUndRabattNachMonat] GROUP BY [Monat] ORDER BY [Monat])\").Fields(0)<\/pre>\n<p>Das Ergebnis lautet korrekterweise <b>1250<\/b>.<\/p>\n<p>Damit k&ouml;nnen wir dann auch noch den minimalen Wert f&uuml;r die prim&auml;re y-Achse ermitteln und den maximalen und den minimalen Wert f&uuml;r die sekund&auml;re y-Achse.<\/p>\n<p>Dabei d&uuml;rfen wir allerdings nicht au&szlig;er acht lassen, dass wir ja noch gar nicht wissen, welcher Wert auf welcher Achse aufgetragen ist. Und vielleicht sind ja sogar beide Datenreihen auf der gleichen y-Achse aufgetragen. Aber auch diese Information k&ouml;nnen wir &uuml;ber die Eigenschaften ermitteln. Dazu ben&ouml;tigen wir die <b>Collection <\/b>namens <b>ChartSeriesCollection<\/b>. Diese liefert alle Datenreihen. F&uuml;r jede Datenreihe finden wir im Bereich <b>Diagrammeinstellungen|Format <\/b>einen Satz von Eigenschaften. Durch Auswahl eines der Eintr&auml;ge des Kombinationsfeldes oben k&ouml;nnen wir die Eigenschaften f&uuml;r eine andere Datenreihe anzeigen lassen (siehe Bild 4). Hier interessieren uns besonders der Name der Datenreihe, denn diesen finden wir jeweils auch in der Abfrage aus der Eigenschaft <b>Transformierte Datensatzherkunft <\/b>wieder (hier <b>SumOfUmsatz <\/b>und <b>SumOfRabatt<\/b>). Au&szlig;erdem interessiert uns hier, auf welcher y-Achse die Werte f&uuml;r die Datenreihe aufgetragen werden &#8211; auf der prim&auml;ren oder der sekund&auml;ren y-Achse. Diese Eigenschaft finden wir unter <b>Diagrammeinstellungen|Format <\/b>unter <b>Datenreihe zeichnen auf<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_02\/pic_1184_004.png\" alt=\"Eigenschaften f&uuml;r eine Datenreihe\" width=\"424,7115\" height=\"568,772\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Eigenschaften f&uuml;r eine Datenreihe<\/span><\/b><\/p>\n<p>Unter VBA k&ouml;nnen wir ebenfalls auf diese Eigenschaften zugreifen. Die Datenreihen finden wir dabei in der bereits oben erw&auml;hnten Collection namens <b>ChartSeriesCollection<\/b>.<\/p>\n<h2>Datenreihen analysieren<\/h2>\n<p>Genau genommen kann es, im Gegensatz zu dem hier gezeigten Beispiel, auch Diagramme geben, wo es nur eine Datenreihe gibt, deren Werte auf der prim&auml;ren y-Achse aufgetragen werden, Diagramme mit zwei Datenreihen auf einer einzigen y-Achse oder auch Datenreihen, deren Werte sich auf die prim&auml;re und die sekund&auml;re y-Achse aufteilen. In all diesen F&auml;llen haben wir jedoch das gleiche Ziel: Wir wollen herausfinden, wie der minimale und der maximale anzuzeigende Wert f&uuml;r diese Datenreihen f&uuml;r die prim&auml;re und die sekund&auml;re Achse lauten.<\/p>\n<p>Dazu verwenden wir die Prozedur <b>WertebereicheErmitteln<\/b> aus Listing 1. Die Prozedur deklariert neben einigen <b>Long<\/b>-Variablen auch eine Objektvariable des Typs <b>obj-ChartSeries<\/b>, die sp&auml;ter beim Durchlaufen aller Datenreihen aus der Collection <b>ChartSeriesCollection <\/b>als Laufvariable verwendet wird.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>WertebereicheErmitteln()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>lngMinPrimaer<span style=\"color:blue;\"> As Long<\/span>, lngMaxPrimaer<span style=\"color:blue;\"> As Long<\/span>, lngMinSekundaer<span style=\"color:blue;\"> As Long<\/span>, lngMaxSekundaer<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngMaxTemp<span style=\"color:blue;\"> As Long<\/span>, lngMinTemp<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>objChartSeries<span style=\"color:blue;\"> As <\/span>ChartSeries\r\n     <span style=\"color:blue;\">Dim <\/span>strFeld<span style=\"color:blue;\"> As String<\/span>, strTransformierteDatensatzherkunft<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     strTransformierteDatensatzherkunft = Me!ctlMinMax.TransformedRowSource\r\n     For Each objChartSeries In Me!ctlMinMax.ChartSeriesCollection\r\n         strFeld = objChartSeries.Name\r\n         <span style=\"color:blue;\">If <\/span>objChartSeries.PlotSeriesOn = acPrimaryAxis<span style=\"color:blue;\"> Then<\/span>\r\n              lngMaxTemp = db.OpenRecordset(\"SELECT Max(\" & strFeld & \") FROM (\" & strTransformierteDatensatzherkunft _\r\n                  & \")\", dbOpenDynaset).Fields(0)\r\n              <span style=\"color:blue;\">If <\/span>lngMaxTemp &gt; lngMaxPrimaer<span style=\"color:blue;\"> Then<\/span>\r\n                 lngMaxPrimaer = lngMaxTemp\r\n              <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             lngMaxTemp = db.OpenRecordset(\"SELECT Max(\" & strFeld & \") FROM (\" & strTransformierteDatensatzherkunft _\r\n                 & \")\", dbOpenDynaset).Fields(0)\r\n             <span style=\"color:blue;\">If <\/span>lngMaxTemp &gt; lngMaxSekundaer<span style=\"color:blue;\"> Then<\/span>\r\n                 lngMaxSekundaer = lngMaxTemp\r\n             <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> objChartSeries\r\n     lngMinPrimaer = lngMaxPrimaer\r\n     lngMinSekundaer = lngMaxSekundaer\r\n     For Each objChartSeries In Me!ctlMinMax.ChartSeriesCollection\r\n         strFeld = objChartSeries.Name\r\n         <span style=\"color:blue;\">If <\/span>objChartSeries.PlotSeriesOn = acPrimaryAxis<span style=\"color:blue;\"> Then<\/span>\r\n              lngMinTemp = db.OpenRecordset(\"SELECT Min(\" & strFeld & \") FROM (\" & strTransformierteDatensatzherkunft _\r\n                  & \")\", dbOpenDynaset).Fields(0)\r\n              <span style=\"color:blue;\">If <\/span>lngMinTemp &lt; lngMinPrimaer<span style=\"color:blue;\"> Then<\/span>\r\n                 lngMinPrimaer = lngMinTemp\r\n              <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">Else<\/span>\r\n              lngMinTemp = db.OpenRecordset(\"SELECT Min(\" & strFeld & \") FROM (\" & strTransformierteDatensatzherkunft _\r\n                  & \")\", dbOpenDynaset).Fields(0)\r\n              <span style=\"color:blue;\">If <\/span>lngMinTemp &lt; lngMinSekundaer<span style=\"color:blue;\"> Then<\/span>\r\n                 lngMinSekundaer = lngMinTemp\r\n              <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> objChartSeries\r\n     Me!txtPrimaerMin = lngMinPrimaer\r\n     Me!txtPrimaerMax = lngMaxPrimaer\r\n     Me!txtSekundaerMin = lngMinSekundaer\r\n     Me!txtSekundaerMax = lngMaxSekundaer\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Ermitteln der minimalen und maximalen Werte f&uuml;r die prim&auml;re und die sekund&auml;re y- Achse<\/span><\/b><\/p>\n<p>Als Erstes referenziert die Prozedur mit der Variablen <b>db <\/b>das <b>Database<\/b>-Objekt zur aktuellen Datenbank. Dann speichert sie in der Variablen <b>strTransformierteDatenherkunft <\/b>den Inhalt der Eigenschaft <b>TransformedRowSource <\/b>des Diagramm-Steuerelements.<\/p>\n<p>Danach folgt bereits die <b>For Each<\/b>-Schleife, mit der wir die einzelnen Datenreihen durchlaufen, also die Elemente der Auflistung <b>ChartSeriesCollection<\/b>, die auch im Bereich <b>Diagrammeinstellungen|Format <\/b>angezeigt werden, und diese jeweils mit der Variablen <b>objChartSeries <\/b>referenzieren.<\/p>\n<p>Innerhalb der <b>For Each<\/b>-Schleife tragen wir zun&auml;chst den Namen der Datenreihe in die Variable <b>strFeld <\/b>ein. Dann pr&uuml;fen wir, ob die Eigenschaft <b>PlotSeriesOn <\/b>von <b>objChart-Series <\/b>den Wert <b>acPrimaryAxis <\/b>enth&auml;lt, also die Datenreihe auf der prim&auml;ren y-Achse aufgetragen wird. Ist das der Fall, kommt die oben erw&auml;hnte transfomierte Datensatzherkunft ins Spiel. Diese bauen wir so um, dass wir den maximalen Wert des Feldes aus <b>strFeld <\/b>f&uuml;r diese Datensatzherkunft erhalten. Diese SQL-Anweisung nutzen wir als Parameter der <b>OpenRecordset<\/b>-Methode des mit <b>db <\/b>referenzierten <b>Database<\/b>-Objekts und lesen mit <b>Fields(0) <\/b>das Ergebnis dieser Abfrage aus. Dieses landet dann in der Variablen <b>lngMaxTemp<\/b>.<\/p>\n<p>Die folgende <b>If&#8230;Then<\/b>-Bedingung pr&uuml;ft, ob <b>lngMaxTemp <\/b>gr&ouml;&szlig;er als der aktuelle Wert in <b>lngMaxPrimaer <\/b>ist. Falls ja, wird <b>lngMaxPrimaer <\/b>durch den Wert aus <b>lngMaxTemp <\/b>ersetzt. Dies geschieht bei Vorhandensein mehrerer Datenreihen, die auf der prim&auml;ren y-Achse angezeigt werden, f&uuml;r jede Datenreihe, sodass schlie&szlig;lich der gr&ouml;&szlig;te maximale Wert aller Datenreihen in <b>lngMaxPrimaer <\/b>landet.<\/p>\n<p>Der <b>Else<\/b>-Zweig der &auml;u&szlig;eren <b>If&#8230;Then<\/b>-Bedingung arbeitet die Datenreihen ab, die auf der sekund&auml;ren y-Achse abgebildet werden. Die hier enthaltenen Befehle entsprechen denen f&uuml;r die prim&auml;re y-Achse, mit dem Unterschied, dass wir hier die Variable <b>lngMaxSekundaer <\/b>mit dem gr&ouml;&szlig;ten Wert f&uuml;r die sekund&auml;re y-Achse f&uuml;llen.<\/p>\n<p>Danach folgt eine zweite <b>For Each<\/b>-Schleife, welche die gleichen Elemente der Auflistung <b>ChartSeriesCollection <\/b>durchl&auml;uft. Diesmal wollen wir die minimalen Werte f&uuml;r die prim&auml;re und die sekund&auml;re y-Achse ermitteln. Dabei starten wir mit den f&uuml;r die beiden Achsen gefundenen maximalen Werten als Wert f&uuml;r die beiden Variablen <b>lngMinPrimaer <\/b>und <b>lngMinSekundaer<\/b>. Von da aus durchlaufen wir die Datenreihen und suchen nach kleineren Werten, die wir dann jeweils in die beiden Variablen einf&uuml;gen.<\/p>\n<p>Schlie&szlig;lich tragen die letzten vier Anweisungen die Werte aus den vier <b>Long<\/b>-Variablen <b>lngMinPrimaer<\/b>, <b>lngMaxPrimaer<\/b>, <b>lngMinSekundaer <\/b>und <b>lngMaxSekundaer <\/b>in die entsprechenden Textfelder <b>txtPrimaerMin<\/b>, <b>txtPrimaerMax<\/b>, <b>txtSekundaerMin <\/b>und <b>txtSekundaerMax <\/b>ein.<\/p>\n<h2>Bereiche der y-Achsen anpassen<\/h2>\n<p>Wenn der Benutzer nun f&uuml;r eine der Optionsgruppen den Wert auf <b>Manuell <\/b>einstellt, sollen die als minimal und maximal ermittelten Werte auf die prim&auml;re und die sekund&auml;re y-Achse angewendet werden. Dazu erweitern wir die beiden Prozeduren, die durch das Ereignis <b>Nach Aktualisierung <\/b>der Optionsgruppen ausgel&ouml;st werden, wie folgt.<\/p>\n<p>Wir pr&uuml;fen darin, ob der Wert der jeweiligen Optionsgruppe der Konstanten <b>acAxisRangeFixed <\/b>entspricht. Ist der Wert <b>acAxisRangeFixed<\/b>, hei&szlig;t das, die in den Textfeldern angegebenen Werte sollen f&uuml;r die y-Achse verwendet werden.<\/p>\n<p>Dann weisen wir der Eigenschaft <b>Primary-Va-lues-AxisMinimum <\/b>den Wert aus dem Textfeld <b>txtPri-maer-Min <\/b>und der Eigenschaft <b>PrimaryValuesAxisMaximum <\/b>den Wert aus dem Textfeld <b>txtPrimaerMax <\/b>zu:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>ogrPrimaerWertebereich_AfterUpdate()\r\n     Me!ctlMinMax.PrimaryValuesAxisRange =  Me!ogrPrimaerWertebereich\r\n     TextfelderAktivieren\r\n     <span style=\"color:blue;\">If <\/span>Me!ogrPrimaerWertebereich = acAxisRangeFixed<span style=\"color:blue;\"> Then<\/span>\r\n         Me!ctlMinMax.PrimaryValuesAxisMinimum =  Me!txtPrimaerMin\r\n         Me!ctlMinMax.PrimaryValuesAxisMaximum =  Me!txtPrimaerMax\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>F&uuml;r die sekund&auml;re y-Achse sieht die Prozedur f&uuml;r das Ereignis <b>Nach Aktualisieren <\/b>der Optionsgruppe analog aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>ogrSekundaerWertebereich_AfterUpdate()\r\n     Me!ctlMinMax.SecondaryValuesAxisRange =  Me!ogrSekundaerWertebereich\r\n     TextfelderAktivieren\r\n     <span style=\"color:blue;\">If <\/span>Me!ogrSekundaerWertebereich = acAxisRangeFixed<span style=\"color:blue;\"> Then<\/span>\r\n         Me!ctlMinMax.SecondaryValuesAxisMinimum =  Me!txtSekundaerMin\r\n         Me!ctlMinMax.SecondaryValuesAxisMaximum =  Me!txtSekundaerMax\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wenn Sie etwa in beiden Optionsgruppen die Option <b>Manuell <\/b>ausw&auml;hlen, werden die Werte f&uuml;r die prim&auml;re und die sekund&auml;re y-Achse so aufgetragen, dass der gr&ouml;&szlig;te Wert ganz oben und der kleinste Wert ganz unten in der jeweiligen y-Achse auftaucht (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_02\/pic_1184_005.png\" alt=\"Automatisch ermittelte maximale und minimale Werte\" width=\"424,7115\" height=\"502,4025\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Automatisch ermittelte maximale und minimale Werte<\/span><\/b><\/p>\n<h2>Benutzerdefinierte Aktualisierung der kleinsten und gr&ouml;&szlig;ten Werte<\/h2>\n<p>Nun wollen wir dem Benutzer auch noch erlauben, die Werte selbst anzupassen. Das ist an sich einfach, denn er kann ja einfach andere Werte in die vier Textfelder eintragen, wenn diese durch Einstellen der Option <b>Manuell <\/b>aktiviert sind. Allerdings geschieht dann noch nichts. Also versehen wir die Textfelder mit einer Ereignisprozedur, die durch das Ereignis <b>Nach Aktualisierung <\/b>ausgel&ouml;st wird. In diese Prozeduren f&uuml;gen wir noch eine kleine Absicherung ein, falls der Benutzer einen nicht numerischen Wert eingibt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>txtPrimaerMax_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>IsNumeric(Me!txtPrimaerMax)<span style=\"color:blue;\"> Then<\/span>\r\n         Me!ctlMinMax.PrimaryValuesAxisMaximum =  Me!txtPrimaerMax\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Geben Sie einen numerischen Wert ein.\"\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>txtPrimaerMin_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>IsNumeric(Me!txtPrimaerMin)<span style=\"color:blue;\"> Then<\/span>\r\n         Me!ctlMinMax.PrimaryValuesAxisMinimum =  Me!txtPrimaerMin\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Geben Sie einen numerischen Wert ein.\"\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>txtSekundaerMax_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>IsNumeric(Me!txtSekundaerMax)<span style=\"color:blue;\"> Then<\/span>\r\n         Me!ctlMinMax.SecondaryValuesAxisMaximum =  Me!txtSekundaerMax\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Geben Sie einen numerischen Wert ein.\"\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>txtSekundaerMin_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>IsNumeric(Me!txtSekundaerMin)<span style=\"color:blue;\"> Then<\/span>\r\n         Me!ctlMinMax.SecondaryValuesAxisMinimum =  Me!txtSekundaerMin\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Geben Sie einen numerischen Wert ein.\"\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Automatische Werte wiederherstellen<\/h2>\n<p>Wenn der Benutzer nun entscheidet, dass er doch lieber die vom Diagramm automatisch eingestellte Ansicht verwenden m&ouml;chte, kann er einfach in einer der Optionsgruppen oder auch in beiden den Wert <b>Automatisch <\/b>wiederherstellen. Die Prozeduren, die durch das Ereignis <b>Nach Aktualisierung <\/b>der beiden Optionsgruppen ausgel&ouml;st werden, enthalten bereits eine Anweisung, welche den Wert der Eigenschaft <b>PrimaryValuesAxisRange <\/b>beziehungsweise <b>SecondaryValuesAxisRange <\/b>auf den in den Optionsgruppen gew&auml;hlten Wert einstellen.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieses Beispiel zeigt, wie Sie die Bereiche der prim&auml;ren und sekund&auml;ren y-Achsen &uuml;ber die Werte von Steuerelemente und deren Umsetzung mit entsprechenden VBA-Anweisungen nach den W&uuml;nschen des Benutzers manipulieren k&ouml;nnen. Auf die gleiche Art k&ouml;nnte man auch die &uuml;brigen Eigenschaften in Form von Steuerelementen im Formular abbilden und dem Benutzer so die M&ouml;glichkeit geben, alle gew&uuml;nschten Einstellungen selbst vorzunehmen, ohne die Entwurfsansicht bedienen zu m&uuml;ssen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>WertebereicheInDiagrammenPerVBA.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/9F2DD4AE-49A1-4FF8-8D76-1D5452BA1E3D\/aiu_1184.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die neuen Diagramme unter Access 2019 und aktuellen Versionen von Office 365 bieten eine moderne Darstellung von Daten. Dem Benutzer bleiben die M&ouml;glichkeiten der Anpassung der angezeigten Daten jedoch verwehrt, wenn er nicht gerade in den Entwurf des Formulars oder Berichts mit dem Diagramm eingreift. Also bieten wir ihm die M&ouml;glichkeit, verschiedene Aspekte der Darstellung &uuml;ber von uns bereitgestellte Steuer-elemente nach seinen W&uuml;nschen anzupassen. Im vorliegenden Beitrag schauen wir uns dabei die Wertebereiche von Diagrammen f&uuml;r die prim&auml;re und sekund&auml;re y-Achse an.<\/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":[66022019,662019,44000023],"tags":[],"class_list":["post-55001184","post","type-post","status-publish","format-standard","hentry","category-66022019","category-662019","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Wertebereiche in Diagrammen per VBA einstellen - 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\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wertebereiche in Diagrammen per VBA einstellen\" \/>\n<meta property=\"og:description\" content=\"Die neuen Diagramme unter Access 2019 und aktuellen Versionen von Office 365 bieten eine moderne Darstellung von Daten. Dem Benutzer bleiben die M&ouml;glichkeiten der Anpassung der angezeigten Daten jedoch verwehrt, wenn er nicht gerade in den Entwurf des Formulars oder Berichts mit dem Diagramm eingreift. Also bieten wir ihm die M&ouml;glichkeit, verschiedene Aspekte der Darstellung &uuml;ber von uns bereitgestellte Steuer-elemente nach seinen W&uuml;nschen anzupassen. Im vorliegenden Beitrag schauen wir uns dabei die Wertebereiche von Diagrammen f&uuml;r die prim&auml;re und sekund&auml;re y-Achse an.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-13T21:06:49+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/c8df2ac85398433d8e9a609f26b92c71\" \/>\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=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Wertebereiche in Diagrammen per VBA einstellen\",\"datePublished\":\"2020-05-13T21:06:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/\"},\"wordCount\":2478,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/c8df2ac85398433d8e9a609f26b92c71\",\"articleSection\":[\"2\\\/2019\",\"2019\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/\",\"name\":\"Wertebereiche in Diagrammen per VBA einstellen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/c8df2ac85398433d8e9a609f26b92c71\",\"datePublished\":\"2020-05-13T21:06:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/c8df2ac85398433d8e9a609f26b92c71\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/c8df2ac85398433d8e9a609f26b92c71\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wertebereiche in Diagrammen per VBA einstellen\"}]},{\"@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":"Wertebereiche in Diagrammen per VBA einstellen - 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\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/","og_locale":"de_DE","og_type":"article","og_title":"Wertebereiche in Diagrammen per VBA einstellen","og_description":"Die neuen Diagramme unter Access 2019 und aktuellen Versionen von Office 365 bieten eine moderne Darstellung von Daten. Dem Benutzer bleiben die M&ouml;glichkeiten der Anpassung der angezeigten Daten jedoch verwehrt, wenn er nicht gerade in den Entwurf des Formulars oder Berichts mit dem Diagramm eingreift. Also bieten wir ihm die M&ouml;glichkeit, verschiedene Aspekte der Darstellung &uuml;ber von uns bereitgestellte Steuer-elemente nach seinen W&uuml;nschen anzupassen. Im vorliegenden Beitrag schauen wir uns dabei die Wertebereiche von Diagrammen f&uuml;r die prim&auml;re und sekund&auml;re y-Achse an.","og_url":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-13T21:06:49+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/c8df2ac85398433d8e9a609f26b92c71","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Wertebereiche in Diagrammen per VBA einstellen","datePublished":"2020-05-13T21:06:49+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/"},"wordCount":2478,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/c8df2ac85398433d8e9a609f26b92c71","articleSection":["2\/2019","2019","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/","url":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/","name":"Wertebereiche in Diagrammen per VBA einstellen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/c8df2ac85398433d8e9a609f26b92c71","datePublished":"2020-05-13T21:06:49+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/c8df2ac85398433d8e9a609f26b92c71","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/c8df2ac85398433d8e9a609f26b92c71"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Wertebereiche_in_Diagrammen_per_VBA_einstellen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Wertebereiche in Diagrammen per VBA einstellen"}]},{"@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\/55001184","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=55001184"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001184\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}