Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1008to1012
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

Probleme bei Skalierung eines Diagrams mit VBA

Probleme bei Skalierung eines Diagrams mit VBA
16.09.2008 13:50:00
Specke
Hallo Experten,
ich habe ein Balkendiagramm erstellt, welches die Laufzeiten von Sicherungen anzeigt.
1. Datenreihe "Spalte Y" - Anfangszeit - ausgeblendet
2. Datenreihe "Spalte V" - Dauer
y-Achse "Spalte D" - Name der Sicherung
Wenn auf dem Datenblatt nur ein Tag ausgewählt wird, wird der im Diagramm auch nur angezeigt. Da die Sicherungszeiten seit Dez 2007 in der Tabelle stehen, ist das Diagramm so nicht zu verwenden.
Also skaliere ich das Diagrammm auf den gewünschten Tag.

Private Sub Chart_Activate()
With Worksheets("NW2")
'letzte beschriebene Zelle in Y
LastRow = .Range("Y65536").End(xlUp).Row
*)    ActiveChart.SeriesCollection(1).XValues = "=NW2!R10C4:R" & LastRow & "C4"
ActiveChart.SeriesCollection(1).Values = "=NW2!R10C25:R" & LastRow & "C25"
ActiveChart.SeriesCollection(2).XValues = "=NW2!R10C4:R" & LastRow & "C4"
ActiveChart.SeriesCollection(2).Values = "=NW2!R10C22:R" & LastRow & "C22"
'kleinstes Datum bestimmen
For i = 10 To LastRow
If .Rows(i).Hidden = False Then
Minimum = CLng(.Cells(i, 25).Value)
Exit For
End If
Next i
'größtes Datum bestimmen
For i = LastRow To 10 Step -1
If .Rows(i).Hidden = False Then
Maximum = CLng(.Cells(i, 25).Value)
Exit For
End If
Next i
End With
'Diagramm - x-Achse skalieren
With ActiveChart.Axes(xlValue)
.MinimumScale = Minimum
.MaximumScale = Maximum
End With
End Sub


Leider kommt es nun in unregelmäßigen Abständen und bei verschiedenen ausgewählten Tagen bei *) zur Fehlermeldung "Die Methode "SeriesCollection für das Chart-Objekt ist fehlgeschlagen.
Woran kann das liegen?
Danke und Gruß
Uppe

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme bei Skalierung eines Diagrams mit VBA
16.09.2008 14:27:18
Beverly
Hi,
dieser Fehler tritt u.a. immer dann auf, wenn das Diagramm eine ungültige Datenreihe enthält. Das erkennst du daran, dass eine Datenreihe vorhanden ist, die als eingetragen ist. Eine leere Datenreihe wird immer dann erstellt, wenn im zugewiesenen Wertebereich kein einziger Wert vorhanden ist (der Wertebereich der Reihe sozusagen leer ist).


AW: Probleme bei Skalierung eines Diagrams mit VBA
17.09.2008 13:34:03
Specke
Hallo Karin,
eine ungültige Datenreihe kann ich nicht finden.
Manchmal funktioniert z.B. der 9.8. und manchmal funktioniert er nicht :-(
Ich habe mal eine sehr abgespeckte Datei hochgeladen, der Fehler kann damit aber reproduziert werden.
https://www.herber.de/bbs/user/55462.xls
Auf dem Blatt NW2 kann man in den Spalten K und L ein Datum filtern. Wenn man dann zu Blatt Diagramm1 wechselt, wird (manchmal) das Diagramm zu diesem Tag angezeigt.
Beim ersten Versuch funktioniert es, beim zweiten und dritten manchmal und beim 4. gefilterten Datum steigt das Makro meistens aus.
Vielleicht hat jemand Zeit und Lust, sich das Makro mal anzuschauen.
Danke und Gruß
Uppe
Anzeige
AW: Probleme bei Skalierung eines Diagrams mit VBA
18.09.2008 09:11:28
Beverly
Hi,
durch das Filtern der Tabelle besteht die Datenreihenformel aus zusammengesetzten, also diskontinuierlichen Wertebereichen. Da die Datenreihenformel nur eine bestimmte Anzahl an Zeichen enthalten darf, kommt es dadurch zu einem Fehler. Verwende stattdessen ein zusätzliches Arbeitsblatt als Hilfstabelle, auf der das Diagramm aufbaut. Kopiere dazu einfach die gefilterten Daten in diese Hilfstabelle.

Private Sub Chart_Activate()
Application.ScreenUpdating = False
With Worksheets("Hilfstabelle")
.UsedRange.Clear
With Worksheets("NW2")
'letzte beschriebene Zelle in Y
LastRow = .Range("Y65536").End(xlUp).Row
Union(.Range("D4:D" & LastRow), .Range("V4:V" & LastRow), .Range("Y4:Y" & LastRow)). _
Copy Worksheets("Hilfstabelle").Range("A1")
End With
LastRow = .Range("A65536").End(xlUp).Row
Minimum = Application.Min(.Range(.Cells(2, 3), .Cells(LastRow, 3)))
Maximum = Application.Max(.Range(.Cells(2, 3), .Cells(LastRow, 3)))
With ActiveChart
.SetSourceData Source:=Worksheets("Hilfstabelle").Range("A1:C" & LastRow)
.SeriesCollection(1).Values = "=Hilfstabelle!R2C3:R" & LastRow & "C3"
.SeriesCollection(2).Values = "=Hilfstabelle!R2C2:R" & LastRow & "C2"
'Diagramm - Y-Achse skalieren
With .Axes(xlValue)
.MinimumScale = Minimum
.MaximumScale = Maximum
End With
End With
End With
Application.ScreenUpdating = False
End Sub




Anzeige
AW: Probleme bei Skalierung eines Diagrams mit VBA
18.09.2008 12:05:00
specke
Hallo Karin,
danke für den Tipp. Werde ich ausprobieren.
Gruß Uppe
Tausend Dank, klappt prima! owT Uppe
23.09.2008 11:17:00
Specke

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige