Seite 1 von 1

Balkenhöhe im Diagramm per VBA ermitteln

BeitragVerfasst: 16. Feb 2021, 12:06
von SramkloV
Hallo liebes Forum,

ich möchte gerne die Höhe einer Form (Pfeil) auf einer Folie per VBA anpassen so dass dieser genau die Differenz zweier Balken in einem Diagramm entspricht. Beispiel: Das Diagramm hat zwei Datenbalken, Balken 1 hat den Wert 100, Balken 2 den Wert 120. Der Pfeil soll also die Differenz von 20 darstellen.

Da die Skala des Diagramms sich mit den Werten verändert kann ich nicht einfach die Werte der Balken zugrunde legen sondern ich benötige die Höhe der einzelnen Balken im Diagramm und muss diese Differenz zugrunde legen

Hat jemand eine Idee wie ich das verwirklichen kann?

Danke schon einmal für eure Lösungsvorschläge!

vg
V

Re: Balkenhöhe im Diagramm per VBA ermitteln

BeitragVerfasst: 24. Mär 2021, 21:21
von theoS
Das machst du doch mit einem gestapeltem Diagramm viel besser.
Schau dich mal um, wie das in Excel gemacht wird, mit VBA kommst du hier nicht weiter.

Re: Balkenhöhe im Diagramm per VBA ermitteln

BeitragVerfasst: 25. Mär 2021, 06:57
von SramkloV
Hallo Theo,

Danke für die Antwort auf meine Frage.
Leider funktionieren gestapelte Balken die nicht da ich ja einen Senkrechten Peil formatieren möchte.

Ich habe zwischenzeitlich aber eine Lösung gebastelt die zumindest für meinen Zweck funktioniert.

Vielleicht hilft es ja dem einen oder anderen

Code: Alles auswählen
Sub Test()
    Dim PPt_Slide As Slide, PPt_Shape As Shape, PPt_Diagramm As Shape
    Dim axleHeight As Long, maxScale As Long, minScale As Long, barValue As Single, barHeight As Single
   
    Set PPt_Slide = ActivePresentation.Slides(1)
    Set PPt_Diagramm = PPt_Slide.Shapes("TestDiagramm")
   
'Setzen des Balkenwertes (erste Balken)
    PPt_Diagramm.Chart.ChartData.Activate
    barValue = PPt_Diagramm.Chart.ChartData.Workbook.Worksheets(1).Range("b2")

'Oberer und unterer Wert der Achsenbeschriftung
    maxScale = PPt_Diagramm.Chart.Axes(xlValue).MaximumScale
    minScale = PPt_Diagramm.Chart.Axes(xlValue).MinimumScale
'Höhe der Achsenbeschriftung
    axleHeight = PPt_Diagramm.Chart.Axes(xlValue).Height
'Berechnen der Box-Höhe
    barHeight = axleHeight / (maxScale - minScale) * (maxScale - barValue)
   
    Set PPt_Shape = PPt_Slide.Shapes("Rechteck 3")
    PPt_Shape.Height = barHeight
    Set PPt_Shape = PPt_Slide.Shapes("Pfeil1")
    PPt_Shape.Height = barHeight
       
End Sub


Viele Grüße
V

Re: Balkenhöhe im Diagramm per VBA ermitteln

BeitragVerfasst: 25. Mär 2021, 08:10
von theoS
Weiß nicht, waa so schwer ist an einem senkrechten Pfeil. Da musst du doch nur eine Grafik nehmen, die einen Pfeil nach unten darstellt.

Re: Balkenhöhe im Diagramm per VBA ermitteln

BeitragVerfasst: 25. Mär 2021, 09:44
von SramkloV
Korrekt!
Wenn du allerdings eine Präsentation mit 20 Folien hast in denen die Daten sich regelmäßig ändern und du je Diagramm 4 Pfeile von der oberen Kante bis zur Oberkante des Datenbalkens ziehen musst kann das manuell (80 Pfeile) ganz schön nerven / Zeitaufwendig sein...

Re: Balkenhöhe im Diagramm per VBA ermitteln

BeitragVerfasst: 25. Mär 2021, 11:38
von theoS
Das geht doch ganz einfach. Du machst das Diagramm so, dass du den Balken immer bis zum Maxwert nach oben auffüllst.
Dann kannst du den Pfeil ins Blatt einmal einfügen, kopieren, in den oberen Teil der Ergänzungsdatenreihe klicken und strg+v den Pfeil einfügen.
Wenn du dir das dann noch als Vorlage speicherst...