For i = 1 To num_min_P
ActiveChart.SeriesCollection(i).name = Worksheets(„Daten“).Cells(3 + i, 2)
Next i
ActiveChart.Location Where:=xlLocationAsObject, name:=„Daten“
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = „Minuten je Plan“
End With
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = False
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
ActiveChart.HasLegend = False
End Sub
***
Nach „For i = 1 To num_min_P“ folgende Fehlermeldung auf
Laufzeitfehler ‚1004‘ Die Methode ‚Series Collection‘ für das Pbkelt ‚_Chart‘ ist fehlgeschlagen
Wäre prima wenn mir jemand weiterhelfen könnte. Mittlerweile weis ich, dass irgendetwas mit der Anzahl an Reihen zu tun hat. Bei i=23 steigt die Routine aus.
das Problem ist möglicherweise, daß die Charts in dem Sheet nicht zwangsläufig durchgehend nummeriert ist, sprich (in diesem Fall), daß es kein Chart #23 gibt.
Hallo,
mit Diagrammen via VBA erstellt kenne ich mich nicht sonderlich gut aus. Ich bin bei selbst erstellten Diagrammen an keine Grenzen gestoßen und kann eigentlich nicht weiterhelfen, höchstens: die Grenze genau ausloten, wie sieht das Diagramm aus wenn die Schleife bei 22 aufhört etc.
Tut mir leid, trotzdem viel Erfolg
Rainer
inhaltlich kann ich nix dazu sagen, ich mache keine Charts. Aber zum Code:
Sub Diagramm_min_je_P()
Dim i As Integer
Charts.Add
ActiveChart.ChartType = xlBarClustered
ActiveChart.SetSourceData Source:=Sheets(„Daten“).Range(„O4:open_mouth:“ & CStr(num_min_P)), PlotBy:= xlRows
Die Daten gehen gehen von O4 bis Onum_min_P, der Inhalt von O4 steckt also in SeriesCollection(1), der Inhalt von O5 in SC2, usw. bis Onum_min_P. Die SC umfaßt also Onum_min_p minus 4 Elemente. Die For-Schleife zählt aber von 1 an (For i = 1 To num_min_P), versucht also auf Onum_min_P minus 1 Element zuzugreifen.
Klar, daß die letzten drei Zugriffsversuche an die Wand laufen, denn die Elemente der SeriesCollection gibt’s ja gar nicht. Dann muß diese Fehlermeldung kommen.
Aber noch 'was:
Wieso beginnst Du die With-Klausel nicht gleich hier?
With ActiveChart
ActiveChart.SeriesCollection(i).name =
Worksheets(„Daten“).Cells(3 + i, 2)
Next i
ActiveChart.Location Where:=xlLocationAsObject, name:=„Daten“
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = „Minuten
je Plan“
End With
With ActiveChart
Du beendest die With-Klausel und beginnst sie gleich wieder neu. Also sind die beiden Zeilen überflüssig.
.HasAxis(xlCategory, xlPrimary) = False
.HasAxis(xlValue, xlPrimary) = True
End With
Warum beendest Du hier die With-Klausel erneut? Die zwei nächsten Befehle beziehen sich doch auch auf ActiveChart.
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType =
xlAutomatic
ActiveChart.HasLegend = False End With
Die End-With-Klausel hier, und schon ist alles leichter lesbar.
Hallo Wauzzz,
ein bisschen mehr Hintergrundinfo könnte dienlich sein: Was ist die Ausgangssituation, was soll passieren, …
Ohne das alles fällt mir jetzt nur spontan ein: Collections werden mit 0 beginnend nummeriert, also probier’s einfach so:
For i = 0 To num_min_P -1
Wenn’s das nicht ist, dann s.o.
Mein VBA ist im Bereich Diagramme nicht so gut. Aber weiss das Programm, was in der Variable num_min_P gespeichert ist? ich sehe keine Zuweisung eines Wertes. Sonst kann ich glaubs nicht helfen. Sorry
Ist Option Explicit gesetzt? Ich kann nicht erkennen, woher die Variable num_min_P kommt und welchen Inhalt diese hat.
Geh doch den Code mal mit F8 durch und lass Dir die Werte von i, etc. anzeigen, dann sollte es erkennbar werden, wo der Fehler herkommt.
Wenn wirklich immer bei i=23 Ende ist, dann solltest Du mal die Werte in Zelle O23 ansehen - Vielleicht ist da eine falsche Formatierung oder so drin.
Ansonsten bitte mal die komplette Excel-Datei anhängen, dann tu ich mich leichter.