Wenn’s nicht mehr MSGraph ist – und das alte Steuerelement fehlt

Früher hattest Du das „Microsoft Graph“-Diagramm.
Einfügen, doppelklicken, fertig.
Heute gibt’s das nicht mehr überall.

Und wenn Du moderne Diagramm-Steuerelemente per VBA füttern willst,
brauchst Du neue Tricks.

Ich zeig Dir, wie ich das mache – direkt und dynamisch.

Ausgangslage: Formular mit Diagramm-Steuerelement

Du hast ein Access-Formular (z. B. frmUmsatz),
darauf ein modernes Diagramm (z. B. Diagramm1),
und willst es dynamisch mit Daten füllen.

Nicht statisch. Nicht gebunden.
Sondern aus VBA heraus – sauber, per Recordset.

Diagramm vorbereiten

  • Diagramm einfügen: „Modernes Diagramm“
  • Typ wählen (z. B. Balken, Linie, Kreis)
  • Datenbindung entfernen
  • Diagrammname setzen (z. B. ctlChartUmsatz)

Dann geht’s los im Code.

Beispiel 1: Einfacher Recordset als Datenquelle

Private Sub Formular_Aktivieren()
    Call DiagrammAktualisieren
End Sub

Private Sub DiagrammAktualisieren()
    Dim rs As DAO.Recordset
    Dim strSQL As String

    strSQL = "SELECT Monat, Umsatz FROM qryUmsatzMonat"
    Set rs = CurrentDb.OpenRecordset(strSQL)

    With Me!ctlChartUmsatz
        .RowSourceType = "Table/Query"
        .RowSource = strSQL
        .Requery
    End With

    rs.Close
    Set rs = Nothing
End Sub

Wichtig: Das Diagramm braucht einen SQL-String oder Tabellenname als RowSource.
Direktes Füttern mit Array? Geht nicht.

Beispiel 2: Dynamisch per VBA-SQL zusammensetzen

Du willst nach Jahr oder Kunde filtern?

Private Sub cmbJahr_AfterUpdate()
    Call DiagrammNachJahr(Me!cmbJahr)
End Sub

Private Sub DiagrammNachJahr(intJahr As Integer)
    Dim strSQL As String

    strSQL = "SELECT Monat, SUM(Umsatz) AS Gesamt " & _
             "FROM tblUmsaetze " & _
             "WHERE Jahr = " & intJahr & " " & _
             "GROUP BY Monat"

    With Me!ctlChartUmsatz
        .RowSource = strSQL
        .Requery
    End With
End Sub

Funktioniert auch mit Kombis aus mehreren Feldern.
Aber: Spaltennamen müssen genau passen zur Achsenkonfiguration.

Diagramm anpassen per VBA

Wenn Du das Aussehen steuern willst (z. B. Farben, Legenden),
musst Du das per Benutzeroberfläche vordefinieren.
Die neuen Diagramm-Steuerelemente sind nicht COM-gesteuert.
Du hast keinen Zugriff auf Achsen, Farben, Legende über VBA.

Nur die Datenquelle kannst Du dynamisch setzen.
Der Rest bleibt starr.

Alternativ: Diagramm per Excel erzeugen

Wenn Du volle Kontrolle willst – dann nimm Excel.
Erzeuge Diagramme im Hintergrund und zeig sie in Access als Bild an.

Beispiel:

Dim xlApp As Object
Dim xlWB As Object
Dim xlChart As Object

Set xlApp = CreateObject("Excel.Application")
Set xlWB = xlApp.Workbooks.Add
Set xlChart = xlWB.Charts.Add

' Daten einfügen
xlWB.Sheets(1).Cells(1, 1).Value = "Monat"
xlWB.Sheets(1).Cells(1, 2).Value = "Umsatz"
xlWB.Sheets(1).Cells(2, 1).Value = "Januar"
xlWB.Sheets(1).Cells(2, 2).Value = 10000
' ...

' Diagramm erstellen
With xlChart
    .ChartType = 51 ' xlColumnClustered
    .SetSourceData xlWB.Sheets(1).Range("A1:B2")
    .Export "C:\temp\diagramm.png", "PNG"
End With

' In Access anzeigen
Me!imgChart.Picture = "C:\temp\diagramm.png"

xlWB.Close False
xlApp.Quit
Set xlChart = Nothing
Set xlWB = Nothing
Set xlApp = Nothing

Damit kannst Du alles steuern – Farben, Achsen, Format.
Aber Du brauchst Excel auf dem Client.

Tabelle: Vergleich Diagrammarten in Access

DiagrammtypDatenbindung über VBAFormatierung per CodeFlexibilitätPerformance
Modernes Access-Diagramm✅ SQL / Query❌ nur manuellmittelgut
Klassisches MSGraph⚠️ nicht mehr überall✅ COM-gesteuerthochveraltet
Excel-Diagramm via VBA✅ komplett✅ voll steuerbarsehr hochlangsamer

Mein Setup für diagrammgestützte Access-Formulare

EinsatzLösung
Statisches ReportingModernes Diagramm mit gespeicherter Abfrage
Filterbare ÜbersichtSQL via VBA in .RowSource setzen
Flexible DarstellungExcel-Diagramm mit Export als Bild
Interaktive AnalysePower BI via Embedded oder Link

Diagramme sehen einfach aus – aber dynamisch sind sie zickig.

Mit ein bisschen SQL und einem Requery bekommst Du’s sauber hin.
Und wenn Du mehr brauchst: Excel kann helfen.
Access zeigt’s Dir dann – ohne Drama.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert