Diagramme mit VBA erstellen
#11
Hi,
super vielen Dank, das klappt wie es soll, fehlte wohl "nur" das Address.

Aber natürlich hab ich schon wieder zwei neue Probleme, wo der Macro Rekorder aber anscheint nicht funktioniert, ich möchte für die Datenbalken einen Farbverlauf einstellen, so wie auf dem Bild im Anhang zu sehen, wenn ich das mit dem Recorder aufzeichne bekomme ich aber nur ein

Code:
    ActiveSheet.ChartObjects("Diagramm 3").Activate
    ActiveChart.FullSeriesCollection(1).Select
    Selection.Format.Fill.Visible = msoTrue
    Selection.Format.Fill.Visible = msoTrue
    Selection.Format.Fill.Visible = msoTrue

wie kann ich das umsetzen?

Das andere ich das ich die Seitenränder kleiner haben möchte, dazu hab ich folgendes auf das PageSetup eingestellt
Code:
.LeftMargin = Application.InchesToPoints(0.5)
    .RightMargin = Application.InchesToPoints(0.5)
    .TopMargin = Application.InchesToPoints(0.5)
    .BottomMargin = Application.InchesToPoints(0.5)
    .HeaderMargin = Application.InchesToPoints(0)
    .FooterMargin = Application.InchesToPoints(0)

aber wenn ich dann unter "Seitenränder" nachsehe, sind dort die "normalen" Ränder eingestellt.

Danke


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#12
Hallöchen,

bei dem aufgezeichneten Code steht nix zum Farbverlauf Sad
Schaue mal da bei microsoft-fillformat.twocolorgradient

.. und zu den Seitenrändern, beim richtigen Blatt bist Du?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Mila
Antworten Top
#13
Hi,
ich hab das mit dem Farbverlauf aufgrund deines Links jetzt mal so versucht, leider ohne erfolg.

Code:
With .SeriesCollection(1) 'Der erste Balken im Chart
                        .Interior.Color = RGB(193, 255, 193) 'Wird hell grün eingefärbt
                        .FillFormat.TwoColorGradient msoGradientHorizontal, 1
                       
                    End With

Kommt immer Laufzeitfeler 438... Irgendwas passt noch nicht....

Hab dann mal versucht ob ChatGPT zu nutzen und siehe da, es klappt, wenn ich es so nutze
Code:
.Format.Fill.TwoColorGradient msoGradientVertical, 1

Dein Hinweis war aber genau der Tip in die richtige richtung.

Bei den Seitenrändern, ja bin auf dem richtigen Blatt, z.b. der Druckbereich wird korrekt gesetzt, bzw. Landscape usw.
Wenn ich z.b 
Code:
.LeftMargin = Application.InchesToPoints(0.5)
setze, und dann mir den Wert im Direktfenster anzeigen lasse, bekomme ich 36 als Ergebnis.....
Code:
?Worksheets("Charts " & Trim(arrOhneDuplikate2(x))).PageSetup.leftMargin
36

Wenn ich unter Seitenlayout/Seitenränder gucke, dann steht bei Links 1,8 und das ändert sic auch nicht, wenn ich die 0.5 z.b. durch 1 ersetze.


LG
Antworten Top
#14
Hallöchen,

Sub test()
ActiveSheet.PageSetup.LeftMargin = Application.InchesToPoints(1.5)
End Sub

--> da steht bei mir 3,8

Sub test()
ActiveSheet.PageSetup.LeftMargin = Application.InchesToPoints(0.5)
End Sub

--> da steht bei mir 1,3
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Mila
Antworten Top
#15
Hi,
seltsame Nummer......

Bei mir sieht der Code so aus
Code:
With Worksheets("Charts " & Trim(arrOhneDuplikate2(x))).PageSetup
    .Orientation = xlLandscape
    .PrintArea = ("A1:U170")
    .PrintTitleRows = "$A$1:$U$3"
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .LeftMargin = Application.InchesToPoints(0.2)
    .RightMargin = Application.InchesToPoints(0.2)
    .TopMargin = Application.InchesToPoints(0.2)
    .BottomMargin = Application.InchesToPoints(0.2)
Die Orientation, PrintArea usw werden alle sauber genommen, nur die Seitenränder nicht, wenn ich aber dann vor das With noch eine Zeile mit 
Code:
Worksheets("Charts " & Trim(arrOhneDuplikate2(x))).Activate
setze, dann klappt es auch mit den Seitenrändern.
Danke für deinen Tip mit den ActiveSheet.

Noch eine Rückmeldung zu den Farbverläufen, im Diagramm die hab ich nun so gelöst.

Code:
With .SeriesCollection(1)
                .DataLabels.Font.Color = vbWhite
                    With .Format.Fill 'Der erste Balken im Chart
                        .TwoColorGradient msoGradientVertical, 2
                        .GradientStops.Insert RGB(0, 0, 255), 0 'Hell Grün bei 0%
                        .GradientStops.Insert RGB(86, 86, 255), 0.7 'Mittleres Grün bei 50%
                        .GradientStops.Insert RGB(255, 255, 255), 1 'Weiß bei 100%
                    End With
                End With
Antworten Top
#16
Hi,
ich habe aber noch eine Frage,
ich habe Diagramme die dann "interessante" Daten haben, so das der Balken sehr klein ist und da die Schriftfarbe weiß ist sieht man diese dann nicht, in dem blauen Balken sieht man es.

Wie kann ich das abfangen das auch bei den kleinen Balken dann die Schrift angezeigt wird, also da müsste ja wahrscheinlich dann dynamisch die Farbe gewechselt werden.

In dem Blauen Balken sieht man aber auch das der Umbruch nicht sauber ist, wie kann ich die Zahl in einer Zeile anzeigen?

Danke


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#17
Hi,
vielleicht noch einer eine idee wie ich die Datenbeschriftung optimieren kann, man sieht halt bei ganz kleinen blauen Balken teilweise garkeinen Text (da Textfarbe weiß) und bei anderen wird wieso auch immer so ein unschöner Zeilenumbruch gemacht, wie bekomme ich den weg, der Balken ist eigentlich groß genug..

Leider konnte ich mit dem Recorder und Google keine passende idee finden.

Danke

LG


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#18
Hallöchen,

Du kannst die Beschriftung auch außerhalb setzen, da pass immer schwarz auf weiß oder eben zum Hintergrund passend.
Bei schmalen Balken hast Du aber auch das Problem, dass sich Beschriftungen überschneiden können. Du müsstest ggf. in Abhängigkeit der Balkenanzahl die Schriftgröße variieren.

Eventuell hilft die Option "Textüberlauf über Form zulassen" bei der Ausrichtung der Datenbeschriftung.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste