Anzeige
Archiv - Navigation
1528to1532
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

XY Diagram dynamisch aktualisieren

XY Diagram dynamisch aktualisieren
14.12.2016 11:15:59
Rainer
Hallo Excelfreunde,
Ich habe ein XY Diagram (Werte über Zeit), welches dynamisch aktualisiert werden soll. Dazu haben wir in Zelle Z43 die aktuelle Zeit und in Zelle Z44 den Wert aus Z43 minus ein frei wählbares Interval.
Das klappt erstaunlicherweise sogar, trotz meiner stümperhaften Kenntnisse in VBA Syntax.
Private Sub Worksheet_Calculate()
If Range("Z43")  Z43 Then 'Wert hat sich geändert
Set TB = ThisWorkbook.Sheets("MAIN")
TB.ChartObjects("Diagramm 26").Activate
ActiveChart.Axes(xlCategory).MinimumScale = Range("z44")
ActiveChart.Axes(xlCategory).MaximumScale = Range("z43")
ActiveChart.SeriesCollection(2).XValues = Worksheets("EXPORT").Range("a9:a1000")
ActiveChart.SeriesCollection(2).Values = Worksheets("EXPORT").Range("o9:o1000")
ActiveChart.SeriesCollection(3).XValues = Worksheets("EXPORT").Range("a9:a1000")
ActiveChart.SeriesCollection(3).Values = Worksheets("EXPORT").Range("p9:p1000")
ActiveChart.SeriesCollection(4).XValues = Worksheets("EXPORT").Range("a9:a1000")
ActiveChart.SeriesCollection(4).Values = Worksheets("EXPORT").Range("q9:q1000")
End If
End Sub
Die Frage ist, kann man diese Automatik auch ohne "Activate" + "ActiveChart" schreiben? Ich habe es probiert in der Form:

With Diagramm 26
.Axes(xlCategory).MinimumScale = Range("z44")
.Axes(xlCategory).MaximumScale = Range("z43")
End With
Aber ohne Erfolg, auch ein paar Variationen helfen mir nicht weiter. Was mache ich diesmal falsch?
Gruß
Rainer

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: XY Diagram dynamisch aktualisieren
14.12.2016 14:35:03
Beverly
Hi Rainer,
versuche es mal so (ungetestet):
        Set TB = ThisWorkbook.Sheets("MAIN")
With TB.ChartObjects("Diagramm 26").Chart
.Axes(xlCategory).MinimumScale = Range("z44")
.Axes(xlCategory).MaximumScale = Range("z43")
.SeriesCollection(2).XValues = Worksheets("EXPORT").Range("a9:a1000")
.SeriesCollection(2).Values = Worksheets("EXPORT").Range("o9:o1000")
.SeriesCollection(3).XValues = Worksheets("EXPORT").Range("a9:a1000")
.SeriesCollection(3).Values = Worksheets("EXPORT").Range("p9:p1000")
.SeriesCollection(4).XValues = Worksheets("EXPORT").Range("a9:a1000")
.SeriesCollection(4).Values = Worksheets("EXPORT").Range("q9:q1000")
End With


Anzeige
AW: XY Diagram dynamisch aktualisieren
15.12.2016 03:16:49
Rainer
Hallo Beverly,
vielen Dank, es geht so. Ich habe es noch etwas struktiriert und benutze es nun so:

With TB.ChartObjects("Diagramm 26").Chart
With .Axes(xlCategory)
.MinimumScale = Range("z44")
.MaximumScale = Range("z43")
End With
With .SeriesCollection(2)
.XValues = Worksheets("EXPORT").Range("a9:a1000")
.Values = Worksheets("EXPORT").Range("o9:o1000")
End With
With .SeriesCollection(3)
.XValues = Worksheets("EXPORT").Range("a9:a1000")
.Values = Worksheets("EXPORT").Range("p9:p1000")
End With
With .SeriesCollection(4)
.XValues = Worksheets("EXPORT").Range("a9:a1000")
.Values = Worksheets("EXPORT").Range("q9:q1000")
End With
End With
Vielen Dank,
Rainer
Anzeige
AW: XY Diagram dynamisch aktualisieren
16.12.2016 10:54:39
Rainer
Noch ein Update:
Range("a9:a1000")
ist natürlich ziemlich kurzsichtig, wenn man mehr als 990 Werte bekommen kann. Bei einem "dynamischen Diagramm" vermutlich nicht ungewöhnlich.
Aus:

.SeriesCollection(2).XValues = Worksheets("EXPORT").Range("a9:a1000")
.SeriesCollection(2).Values = Worksheets("EXPORT").Range("o9:o1000")
habe ich nun gemacht:

.XValues = Worksheets("EXPORT").Range("A" & FirstRow & ":A" & LastRow)
.Values = Worksheets("EXPORT").Range("O" & FirstRow & ":O" & LastRow)
wobei natürlich die beiden Rows erst gefunden werden müssen mit:

LastRow = Worksheets("EXPORT").Cells(Rows.Count, 1).End(xlUp).Row
FirstRow = LastRow - 30 * Range("N39") 'N39 time interval in minutes
FirstRow = IIf(FirstRow 
Der Term 30 * N39 ergibt sich bei mir aus dem Messdatenabstand von 2 Sekunden.
Viel Spaß damit,
Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige