Makro zum rollieren vom Diagramm

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Makro zum rollieren vom Diagramm
von: Marco
Geschrieben am: 25.09.2015 14:26:58

Hallo,
ich habe ein paar Probleme mit einem Makro.
Ich möchte mit einem Makro ein Diagramm einen Tag vor oder Rückwärts rollieren lassen.
Es werden immer Daten von 7 Tagen angezeigt. z.B. 6.9 - 12.9
Nun habe ich 2 Button erstellt. Vor und Zurück. Wenn ich z.B. auf vor drücke soll das Diagramm dann einen Tag weiter springen. (7.9 - 13.)
Bei zurück natürlich in die andere Richtung.
Habe folgenden Code probiert,(der hat in einer anderen Mappe schon funktioniert)

Sub Chart_minus_Montage()
Dim start As Integer
Dim Ende As Integer
Dim StartVorher As Integer
Dim EndeVorher As Integer
Dim Diese_Datei_Name As String
StartVorher = Sheets("Tabelle 3").Range("B2")
EndeVorher = Sheets("Tabelle 3").Range("B3")
If StartVorher = 4 Then Exit Sub
start = StartVorher - 1
Ende = EndeVorher - 1
    Diese_Datei_Name = ThisWorkbook.Name
    ActiveSheet.ChartObjects("Diagramm 1").Activate
    ActiveChart.Axes(xlValue).MajorGridlines.Select
    ActiveChart.SetSourceData Source:=Sheets("Montage 2").Range("I" & start & ":L" & Ende)
    ActiveChart.SeriesCollection(1).Name = "='Montage 2'!$J$8"
    ActiveChart.SeriesCollection(2).Name = "='Montage 2'!$K$8"
    ActiveChart.SeriesCollection(3).Name = "='Montage 2'!$L$8"
    
    ActiveWindow.Visible = False
    Windows(Diese_Datei_Name).Activate
    Range("A1").Select
Sheets("Tabelle 3").Range("B2") = start
Sheets("Tabelle 3").Range("B3") = Ende
End Sub
Sub Chart_plus_Montage()
Dim start As Integer
Dim Ende As Integer
Dim StartVorher As Integer
Dim EndeVorher As Integer
Dim Diese_Datei_Name As String
StartVorher = Sheets("Tabelle 3").Range("B2")
EndeVorher = Sheets("Tabelle 3").Range("b3")
start = StartVorher + 1
Ende = EndeVorher + 1
Diese_Datei_Name = ThisWorkbook.Name
 
    ActiveSheet.ChartObjects("Diagramm 1").Activate
    ActiveChart.Axes(xlValue).MajorGridlines.Select
    ActiveChart.SetSourceData Source:=Sheets("Montage 1").Range("I" & start & ":L" & Ende)
    ActiveChart.SeriesCollection(1).Name = "='Montage 1'!$J$7"
    ActiveChart.SeriesCollection(2).Name = "='Montage 1'!$K$7"
    ActiveChart.SeriesCollection(3).Name = "='Montage 1'!$L$7"
    
    ActiveWindow.Visible = False
    Windows(Diese_Datei_Name).Activate
    Range("A1").Select
Sheets("Tabelle 3").Range("B2") = start
Sheets("Tabelle 3").Range("B3") = Ende
End Sub
Bei dem Minus Code kommt dauernd Fehler 1004 Anwendungs oder Objektdefinierter Fehler.
Bei dem Plus Code kommt dauernd Fehler 1004 Ungültiger Parameter.
Hat jemand eine Idee?
Danke schonmal im voraus

Bild

Betrifft: AW: Makro zum rollieren vom Diagramm
von: EtoPHG
Geschrieben am: 25.09.2015 14:53:45
Hallo Marco,
Das ist ohne Beispielmappe nicht nachzuvollziehen! Du sagst auch nicht bei welcher Codezeile der Fehler auftritt.
Die entscheidende Frage ist aber, warum du das mit VBA lösen willst? Es gibt genügend Beispiele von dynamischen Diagrammen in der Recherche und noch viel mehr im iNet, die solche 'Verschiebungs'operationen ohne jeglichen Code erlauben.
Gruess Hansueli

Bild

Betrifft: AW: Makro zum rollieren vom Diagramm
von: Daniel
Geschrieben am: 25.09.2015 17:14:48
Hi
das würde ich einfacher lösen.
und zwar mit einer kleinen Hilfstabelle, in welcher du für genau´7 Tage die Werte aus der Haupttabelle mit Hilfe der INDEX-Funktion ausliest.
Das Diagramm erstellst du über die Hilfstabelle.
die Verschiebung machst du, in dem du den Zeilenwert für die Index-Funktion entsprechen veränderst, das sollte sogar ganz ohne Makro funktionieren.
Schau dir mal das Beispiel an: https://www.herber.de/bbs/user/100400.xlsx
gruß Daniel

Bild

Betrifft: AW: Makro zum rollieren vom Diagramm
von: matthias
Geschrieben am: 25.09.2015 21:07:43
Hallo Marco,
ich würde das ganze über einen Autofilter machen, Diagramme zeigen ausgeblendete Zeilen nämlich i.d.R. nicht an. D.h. in deine Datentabelle einen Autofilter setzen, ein ActiveX-Spinbutton bezogen auf Zelle1 neben das Diagramm pflastern, Zelle2.Formel = "=Zelle1+6" . Dazu ein zwei Events und fertig ist der Salat.
https://www.herber.de/bbs/user/100404.xlsm

'Eingabe über Spinbutton
Private Sub SpinButton1_Change()
Dim rZelle1 As Range, rZelle2 As Range, rFilter As Range
Set rZelle1 = Tabelle2.Range("E1")  'Von
Set rZelle2 = Tabelle2.Range("G1")  'Bis
Set rFilter = Tabelle1.Range("A:B") 'Zu filternder Bereich
    If IsDate(rZelle1) And IsDate(rZelle2) Then _
        rFilter.AutoFilter Field:=1, Criteria1:=">=" & CSng(rZelle1), Operator:=xlAnd, _
        Criteria2:="<=" & CSng(rZelle2)
    If IsDate(rZelle1) = False And IsDate(rZelle2) Then _
        rFilter.AutoFilter Field:=1, Criteria1:="<=" & CSng(rZelle2), Operator:=xlAnd
    If IsDate(rZelle1) And IsDate(rZelle2) = False Then _
        rFilter.AutoFilter Field:=1, Criteria1:=">=" & CSng(rZelle1), Operator:=xlAnd
    If IsDate(rZelle1) = False And IsDate(rZelle2) = False Then _
        Tabelle1.ShowAllData
End Sub
'Händige Eingabe in Zelle
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E1,G1")) Is Nothing Then SpinButton1_Change
End Sub
Wobei ich Daniel beipflichten muss den Weg ohne Makro zu wählen, sofern es einen gibt.
lg Matthias

Bild

Betrifft: AW: Makro zum rollieren vom Diagramm
von: Beverly
Geschrieben am: 26.09.2015 09:50:05
Hi Marco,
schau dir mal das Beispiel Datenbereich verschieben auf meiner HP, Seite Diagramme m. VBA an.




Bild

Betrifft: AW: Makro zum rollieren vom Diagramm
von: Marco
Geschrieben am: 30.09.2015 06:43:07
Erstmal Danke für eure Antworten.
Krankheitsbedingt kann ich zur Zeit nur übers Handy ins Internet.
Somit kann ich eure Vorschläge leider noch nicht testen.
Werde das so schnell wie möglich machen und dann hier eine Info posten.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Makro zum rollieren vom Diagramm"