Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Diagramm per Makro erstellen
#1
Hallo zusammen,

ich komme leider ohne Hilfe nicht weiter. Und zwar habe ich mit Makrorecorder die Erstellung eines Diagrammes aufgezeichnet. Wenn ich das Diagramm wieder lösche und einen erneuten Test starte, hält der Debugger in folgender Zeile des Codes an ....
Code:
ActiveSheet.Shapes.AddChart.Select
Ausgangspunkt ist: Diagramm erstellen per Klick auf Button, Datumsspalte A ist waagerechte und Spalte G ist senkrechte Achse. Dann zwei Trendlinien erstellen, 1. Gleitender Durchschnitt 200 Farbe Lila und 2. Gleitender Durchschnitt 38 Farbe rot.

Wo liegt der Fehler?


Angehängte Dateien
.xlsm   Test_Diagramm.xlsm (Größe: 170,85 KB / Downloads: 7)
Top
#2
Hallo Bernie

so hab ich es getestet
weiß aber nicht ob es Deiner Vorstellung entspricht
Code:
Sub Makro1()
    With ActiveSheet
        .ListObjects("ARL.DE").Range.AutoFilter Field:=1, Criteria1:= _
            xlFilterYearToDate, Operator:=xlFilterDynamic
        .Range("G1").Activate
        .Shapes.AddChart.Select
    End With
    With ActiveChart
        .ChartType = xlLine
        .SetSourceData Source:=Range("A:A,G:G")
        .Axes(xlValue).Select
        .SeriesCollection(1).Select
        .SeriesCollection(1).Trendlines.Add
        .SeriesCollection(1).Trendlines(1).Select
    End With
    With ActiveSheet.ChartObjects(1)
      .Left = 400
      .Top = 30
      .Width = 500
      .Height = 200
    End With
    With Selection
        .Type = xlMovingAvg
        .Period = 2
    End With
    With Selection
        .Type = xlMovingAvg
        .Period = 38
    End With
    With Selection.Format.Line
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
    End With
    With Selection.Format.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
    End With
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.SeriesCollection(1).Trendlines.Add
    ActiveChart.SeriesCollection(1).Trendlines(2).Select
    With Selection
        .Type = xlMovingAvg
        .Period = 2
    End With
    With Selection
        .Type = xlMovingAvg
        .Period = 200
    End With
    With Selection.Format.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 0, 0)
    End With
    With Selection.Format.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(112, 48, 160)
        .Transparency = 0
    End With
End Sub
in Deinem Makro war dann auch von Diagramm3 die Rede, das gibt so aber nicht, heißt jedesmal anders
darum habe ich die Maße hiermit erstellt
Code:
With ActiveSheet.ChartObjects(1)
       .Left = 400
       .Top = 30
       .Width = 500
       .Height = 200
     End With
MfG Tom
Top
#3
Hallo Tom,

Danke für deine Hilfe, hab wieder dazu gelernt.

Mit der Trendlinie "Gleitender Durchschnitt 200Tage" funktioniert noch nicht richtig, stellt nur einen Punkt bzw. ganz kleinen Strich dar.

Werde mal ein wenig probieren und sollte ich nicht weiter kommen, melde ich mich!
Top
#4
Hallo zusammen,

ich versuche den Code vom Tom an meine Bedürfnisse anzupassen, leider ohne Erfolg.

Und zwar möchte ich den Autofilter so setzen (Datum in Spalte 1), dass die zwischen Zelle A2 (Enddatum) und Zelle A261 (Anfangsdatum) gefiltert wird (das bekomme ich mit Recorder hin ...
Code:
Sub Makro8()
    Range("A1:G1").Select
    Selection.AutoFilter
    ActiveSheet.ListObjects("ARL.DE").Range.AutoFilter Field:=1, Criteria1:= _
        ">=10.10.2013", Operator:=xlAnd, Criteria2:="<=10.10.2014"
    ActiveWindow.SmallScroll Down:=-108
    ActiveSheet.ListObjects("ARL.DE").Range.AutoFilter Field:=1, Criteria1:= _
        ">=10.10.2013", Operator:=xlAnd, Criteria2:="<=10.10.2014"
End Sub
... allerdings bekomme ich folgendes nicht gebacken. "Criteria1 soll nicht 10.10.2013 stehen sondern DatumsWert Zelle A261 und Criteria2 Zelle A2. Diese sind in allen Blättern identisch.

Und ich versuche die Zeile in Toms Code zu ändern ".ListObjects("ARL.DE")" und zwar sollen für ein bestimmtes Tabellenblatt "alle" gemeint sein.

Wer könnte mir helfen? Danke schon mal im Voraus!!!
Top
#5
Hallo Bernie,

mal ungetestet hier reingeschrieben

Code:
ActiveSheet.ListObjects("ARL.DE").Range.AutoFilter Field:=1, Criteria1:= _
         ">=" & ActiveSheet.Range("A261").Text, Operator:=xlAnd, Criteria2:="<=" & ActiveSheet.Range("A2").Text
Gruß Stefan
Win 10 / Office 2016
Top
#6
Hi Stefan,

Danke für deine Hilfe.

Es funktioniert nur bedingt und zwar wenn der Code durchläuft werden alle zeilen ausgeblendet, erst wenn ich auf den Autofilterbutton in Zelle A1 klicke und der Dialog sich öffnet und wenn ich dann auf ok klicke wird erst der korrekte Bereich angezeigt. Das hatte ich beim Aufzeichnen mit dem Recorder nicht.

Wo kann der Fehler liegen?
Top
#7
Hallo Bernie,

keine Ahnung. Könntest Du die Datei hier hochladen damit man sich das anschauen kann?
Gruß Stefan
Win 10 / Office 2016
Top
#8
Ergänzung Mustermappe:


Angehängte Dateien
.xlsm   diagramm2.xlsm (Größe: 170,54 KB / Downloads: 5)
Top
#9
Hallo Bernie,

tut mir leid. Ich finde keine Lösung.
Gruß Stefan
Win 10 / Office 2016
Top
#10
Hallo Stefan,

nicht schlimm, du hast sowieso einiges gut bei mir!!!

@Alle anderen

wäre euch dankbar, wenn ihr mal euch meines Problems annehmen könntet.
Danke schon mal im Voraus.
Top


Gehe zu:


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