Microsoft Excel

Herbers Excel/VBA-Archiv

Zeichnungsfläche von Diagrammen anpassen

Betrifft: Zeichnungsfläche von Diagrammen anpassen von: Juliane
Geschrieben am: 18.08.2020 11:41:13

Hallo zusammen,

ich möchte die Größe der Diagramm Zeichnungsfläche mit einem Makro verändern, wenn bestimmte Spalten gruppiert werden bzw. die Gruppierung rückgängig gemacht wird. Dazu hatte ich schon mal eine Frage gestellt, allerdings ist diese mittlerweile im Archiv, sodass ich darauf nicht mehr antworten kann: https://www.herber.de/forum/archiv/1772to1776/1775649_Aenderung_der_Zeichnungsflaeche_in_Diagrammen.html

Der Code von Franz funktioniert beim Ausblenden super. Vielen Dank an dieser Stelle dafür! Allerdings wird die Breite beim Einblenden nicht richtig gesetzt. Die Zeichnungsfläche ist zwar größer als bei ausgeblendeter Z Spalte, aber viel kleiner als im Code angegeben. Habe etwas mit den left und width Werten rumgespielt, an der Größe hat sich jedoch nichts verändert. Hat von euch jemand eine Idee, warum der Code im Else Block nicht funktioniert? Eigentlich steht da ja das Gleiche wie im oberen Teil.

Viele Grüße Juliane

Betrifft: Bitte Mappe mit Diagramm hochladen - o.T.
von: Beverly
Geschrieben am: 18.08.2020 14:34:58


GrußformelBeverly's Excel - Inn

Betrifft: AW: Bitte Mappe mit Diagramm hochladen - o.T.
von: Juliane
Geschrieben am: 18.08.2020 15:48:05

Hi,
hab eine Beispieldatei hochgeladen: https://www.herber.de/bbs/user/139693.xlsm
Ziel ist, dass die Monate in der x Achse des Diagramms zu den Werten in Zeile 29 bis 31 passen.
Gruß Juliane

Betrifft: AW: Bitte Mappe mit Diagramm hochladen - o.T.
von: Beverly
Geschrieben am: 18.08.2020 16:01:01

Hi Juliane,

ergänze mal innerhalb der If-Anweisung im Else-Zweig die Codezeile DoEvents - vielleicht reicht das ja schon:
  If bolHidden_Z <> bolHidden Then
    With ActiveSheet.ChartObjects("Diagramm 1").Chart.PlotArea
        .Width = 778.54
        .InsideLeft = 142.191
    End With
    DoEvents    '<== ergänzen
    bolHidden_Z = bolHidden
  End If

GrußformelBeverly's Excel - Inn

Betrifft: AW: Bitte Mappe mit Diagramm hochladen - o.T.
von: Juliane
Geschrieben am: 19.08.2020 09:58:08

Hi Karin,
die DoEvents Zeile verändert leider nichts.
Gruß Juliane

Betrifft: AW: Bitte Mappe mit Diagramm hochladen - o.T.
von: Beverly
Geschrieben am: 19.08.2020 10:42:02

Hi Juliane,

das generelle Problem liegt beim Bildschirmaufbau - bei mir hat das DoEvents geholfen.
Aber du kannst die Zeile auch mal durch die folgende ersetzen:
Application.Wait Now + TimeValue("00:00:01")


GrußformelBeverly's Excel - Inn

Betrifft: AW: Bitte Mappe mit Diagramm hochladen - o.T.
von: Juliane
Geschrieben am: 19.08.2020 11:10:32

Hi Karin,
was meinst du denn mit Bildschirmaufbau?
Application.Wait hat leider auch nicht geholfen.
Gruß Juliane

Betrifft: Lösungsvorschlag
von: Beverly
Geschrieben am: 19.08.2020 12:54:09

Hi Juliane,

mit Bildschirmaufbau meine ich, dass Excel zu langsam ist um das Diagramm in der richtigen Breite darzustellen.

Ich habe es jetzt mal anders gelöst: die Diagrammbreite bleibt im Originalzustand mit allen Rubriken erhalten. Ich habe nur ein Rechteck ins Diagramm eingefügt, welches auf dem rechten Teil des Diagramms liegt und einfach ein- und ausgeblendet wird je nach Zustand der Gruppierung. Der Rahmen des Rechtecks ist zu sehen, wenn die Gruppierung geschlossen ist - den musst du noch löschen (habe ihn nur belassen damit du das Rechteck noch sehen kannst).

https://www.herber.de/bbs/user/139705.xlsm


GrußformelBeverly's Excel - Inn

Betrifft: AW: Lösungsvorschlag
von: Juliane
Geschrieben am: 19.08.2020 14:17:27

Hi Karin,
vielen Dank für deine Mühe! Jetzt funktioniert es. Allerdings sind nun in der gruppierten Variante die falschen Werte sichtbar. Es sollen dort nicht die ersten, sondern die letzten 4 Monate sichtbar sein. Die Idee ist, dass standardmäßig die letzten 4 Monate sichtbar sind. Wenn der Nutzer eine längeren Zeitraum betrachten wollen, kann er diesen dann einblenden.
Viele Grüße Juliane

Betrifft: AW: Lösungsvorschlag
von: Beverly
Geschrieben am: 19.08.2020 17:28:51

Hi Juliane,

dann bleibt nur, die Daten in der richtigen Reihenfolge entsprechend in einen anderen Zellbereich zu kopieren (ab Zeile 55, diese Zeilen kannst du ja ausblenden) und das Diagramm darauf aufzubauen - zumindest fällt mir im Augenblick nichts besseres ein.

Hir der Code dazu:
Private Sub Worksheet_Calculate()
Dim strFormel As String
Dim intLetzte As Integer
Dim bolHidden As Boolean
Application.ScreenUpdating = False
intLetzte = IIf(IsEmpty(Cells(40, Columns.Count)), Cells(40, Columns.Count).End(xlToLeft). _
Column, Columns.Count)
bolHidden = Columns(26).EntireColumn.Hidden
Application.EnableEvents = False 'Ereignismakros vorübergehend deaktivieren
If bolHidden = True Then
  If bolHidden_Z <> bolHidden Then
    With ActiveSheet.ChartObjects("Diagramm 1").Chart
        .Shapes(1).Visible = True
        Range(Cells(40, intLetzte - 3), Cells(47, intLetzte)).Copy Cells(55, 22)
        Range(Cells(40, 22), Cells(47, intLetzte - 4)).Copy
        Cells(55, 26).PasteSpecial Paste:=xlValues
        .SeriesCollection(1).XValues = Range(Cells(55, 22), Cells(40, intLetzte))
    End With
    bolHidden_Z = bolHidden
    DoEvents
  End If
Else
  If bolHidden_Z <> bolHidden Then
    With ActiveSheet.ChartObjects("Diagramm 1").Chart
        .Shapes(1).Visible = False
        Range(Cells(40, 22), Cells(47, intLetzte)).Copy
        Cells(55, 22).PasteSpecial Paste:=xlValues
        .SeriesCollection(1).XValues = Range(Cells(55, 22), Cells(55, intLetzte))
    End With
    bolHidden_Z = bolHidden
    DoEvents
  End If
End If
Application.CutCopyMode = False
Application.EnableEvents = True 'Ereignismakros wieder aktivieren
Application.ScreenUpdating = True

End Sub

GrußformelBeverly's Excel - Inn

Beiträge aus dem Excel-Forum zum Thema "Zeichnungsfläche von Diagrammen anpassen"