VBA - Laufzeitfehler '1004'

Hallo allerseits,

***
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

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.

Viele Grüße,
Wauzzz

Hi Wauzzz

große Erfahrung habe ich damit nicht, auch noch nicht programmiert.
Vielleicht hilft dir dieser Link weiter?
http://www.office-loesung.de/ftopic300523_0_0_asc.php

Grüße aus der Pfalz
Manfred

Ahoi,

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.

Danke für die Antwort, aber:

Es ist eine Routine vorgeschaltet, die das Tabellenblatt sortiert und alle Zeilen mit Einträgen in einer Reihe darstellt.
#23 ist also vorhanden.

Nach Ordientierung an der Vorlage aus dem Forum … gleicher Fehler wiederr.

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

Hat doch noch funktioniert ^^
Vielen Dank

Ein wenig mit Zahlen jongliert und es funktioniert.

Hi wauzzz,

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.

End Sub

HTH.

Markus

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.

lg und viel Erfolg
Katharina

sorry, bin im urlaub, keinen zugriff auf entwicklungsrechner

leider keine ahnung. schon lang ka VBA mehr programmiert…

Hey

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

Gruss
m

Hallo Wauzzz,

Zunächst: Welche Excel-Version nutzt Du?

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.

Gruß
Harry

Hallo,

keine Ahnung, Laufeitfehler hat meisten etwas mit der Definitionvon Variablen zu tun,

Gruß

sry, aber ich hab gerade keine zeit, zu antworten.

ich schau es mir später an.