Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
996to1000
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

SeriesCollection(1).Values Fehler 1004

SeriesCollection(1).Values Fehler 1004
06.08.2008 17:14:15
Reinhard
Hallo Wissende,
im folgenden Code kommt bei:
ActiveChart.SeriesCollection(1).Values = "=tabelle1!R3C11:R496C11"
der Laufzeitfehler 1004.
Wie kann man das verhindern? Getestet habe ich den Code an einer leeren Datei, liegt es daran? *kaum glaub*
ActiveChart.SeriesCollection(1).Name = "=""mittel15"""
habe ich überhaup nicht verstanden warum das so geschrieben ist, machte das der makrorekorder? auch da kommt Fehler 1004 wenn ich die Zeile davor auskommentiere.
Leider passiert das auch bei meiner Variante:
ActiveChart.SeriesCollection(1).Name = "mittel15"
Der Code stammt nicht von mir, ist aus einem anderen Forum wo jmd. an sich ein völlig andere Frage zu dem Code hat, deren Beantwortung ich mir durchaus selbst zutraue, es geht darum "K501" dynamisch zu gestalten .
Leider brachte seine Antwort auf meine Rückfrage für mich keinerlei Erkenntnisse ob der Code bei ihm überhaupt läuft, auf meinen Hinweis auf 1004 wurde nicht eingegangen *seufz*
Weiß bitteschön jemand hier wie man den Code überhaupt erstmal zum Laufen bringt? Dankeschön.
Ganz unten habe den kompletten Code gepostet, hier erstmal ein Codeschnipsel bis zur Fehlerstelle:
Option Explicit
'
Sub plot()
Dim a, i
Range("K501").Select
a = 90
For i = 1 To 2
Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
ActiveChart.SetSourceData Source:=Sheets("tabelle1").Range("K501")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=tabelle1!R3C1:R496C1"
ActiveChart.SeriesCollection(1).Values = "=tabelle1!R3C11:R496C11"
ActiveChart.SeriesCollection(1).Name = "=""mittel15"""
' weiterer Code
Next i
a = 0
End Sub
Gruß
Reinhard

Option Explicit
Sub plot()
Dim a, i
Range("K501").Select
a = 90
For i = 1 To 2
Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
ActiveChart.SetSourceData Source:=Sheets("tabelle1").Range("K501")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=tabelle1!R3C1:R496C1"
'ActiveChart.SeriesCollection(1).Values = "=tabelle1!R3C11:R496C11"
ActiveChart.SeriesCollection(1).Name = "=""mittel15"""
ActiveChart.SeriesCollection(2).XValues = "=tabelle1!R3C1:R496C1"
ActiveChart.SeriesCollection(2).Values = "=tabelle1!R3C12:R496C12"
ActiveChart.SeriesCollection(2).Name = "=""mittel25"""
ActiveChart.SeriesCollection(3).XValues = "=tabelle1!R3C1:R496C1"
ActiveChart.SeriesCollection(3).Values = "=tabelle1!R3C13:R496C13"
ActiveChart.SeriesCollection(3).Name = "=""mittel35"""
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "minus " & a & "° (außen)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "f [Hz]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "dB"
End With
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScaleIsAuto = True
.MaximumScale = 95000
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
With ActiveChart.Axes(xlCategory)
.MinimumScale = 0
.MaximumScale = 95000
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = -25
.MaximumScale = 15
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
Sheets("tabelle1").Select
ActiveCell.Offset(0, 12).Select
a = a - 10
Next i
a = 0
End Sub


11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SeriesCollection(1).Values Fehler 1004
06.08.2008 22:21:00
K.Rola
Hallo,
prinzipiell ist das schon ok, nur würde ich an deiner stelle eine Objektvariable, statt ActiveChart,
verwenden.
Dim Ch as Chart
Set Ch = Charts.Add
With Ch
.....
End With
Dann spielt es keine Viola, ob das Objekt wirklich aktiviert ist.
Gruß K.Rola

AW: SeriesCollection(1).Values Fehler 1004
07.08.2008 07:38:00
Beverly
Hi Reinhard,

Sub plot()
Dim chDiagramm As Chart
Dim a, i
a = 90
For i = 1 To 2
Set chDiagramm = Charts.Add
With chDiagramm
.ChartType = xlXYScatterLinesNoMarkers
.SetSourceData Source:=Worksheets("Tabelle1").Range("A4:A496,K4:M496")
.SeriesCollection(1).Name = "mittel15"
.SeriesCollection(2).Name = "mittel25"
.SeriesCollection(3).Name = "mittel35"
.HasTitle = True
.ChartTitle.Characters.Text = "minus " & a & "° (außen)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "f [Hz]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "dB"
With ActiveChart.Axes(xlCategory)
.MinimumScale = 0
.MaximumScale = 95000
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = -25
.MaximumScale = 15
End With
End With
a = a - 10
Next i
Set chDiagramm = Nothing
End Sub




Anzeige
Leider keine Lösung dabei :-(
07.08.2008 15:15:00
Reinhard
Hallo K.Rola, Beverly,
danke erstmal für eure Gedanken und Mühen, leider kriege ich den mistigen 1004 Fehler nicht weg.
Egal ob ich das mit XL2000 in einer völlig leeren Mappe ausprobiere, oder die Datenzellen mit irgendwelchen Zahlen fülle, es kommt der Fehler.
Ich wollte vor dem Sehen vom Code von Beverly grad eben schreiben, daß auch die Umänderung im Sinne von K.Rolas Vorschlag nichts brachte. Endloses Googlen nach "1004 Sriescollection" brachte mich nicht weiter, abgesehen von den zwei Fällen wo jmd. genau das Gleiche hatte, aber leider keine Antwort auf seine Anfrage bekam in irgendwelchen Foren.
Ansonsten ging es da nahezu immer um andere Problematiken die hier gar nicht vorliegen.
Der Makrorekorder zeichnete auch ähnlichen Code auf, beim Aufruf des eben aufgezeichneten Codes kam es auch zum gleichen Fehler 1004.
Der Makrorekorder benutzte da plotarea oder Chartarea, weiß nicht mehr, aber das brachte mich auch nicht weiter, icch habe sogar verschiedene Select-varianten probiert um dann mit Selection.xyz etwas zu erreichen, alles Fehlanzeige:-(
Und immer beim zweiten Befehl, ist nicht zu verstehen, ich mein das so,
bei
ActiveChart.SeriesCollection(1).XValues = "=tabelle1!R3C1:R496C1"
ActiveChart.SeriesCollection(1).Values = "=tabelle1!R3C11:R496C11"
ActiveChart.SeriesCollection(1).Name = "=""mittel15"""
wird "Values" moniert.
Schreibe ich das so:
ActiveChart.SeriesCollection(1).Values = "=tabelle1!R3C11:R496C11"
ActiveChart.SeriesCollection(1).XValues = "=tabelle1!R3C1:R496C1"
ActiveChart.SeriesCollection(1).Name = "=""mittel15"""
wird "XValues" moniert.
ActiveChart.SeriesCollection(1).Name = "=""mittel15"""
spielt eine extra Rolle, das wird immer moniert, egal ob ich
.Name = "=""mittel15"""
oder
.Name = "mittel15"
benutze.
Auch bei sowas:
ActiveChart.SeriesCollection(1).Values = "=tabelle1!R3C11:R496C11"
ActiveChart.SeriesCollection(1).Values = "=tabelle1!R3C11:R496C11"
ActiveChart.SeriesCollection(1).Values = "=tabelle1!R3C11:R496C11"
wird erst die zweite "Values" Zuweisung moniert.
D.h. für mich, vor'm ersten "Values" Zuweisung ist etwas anders aktuell, selektiert, wie auch immer als vor dem zweiten Aufruf.
Was mich auch irritiert, im Inet war oft zulesen, bis XL2007 müßte man
.Values = "=tabelle1!R3C11:R496C11"
benutzen und die andere Schreibweise ginge nicht, das kann aber irgendwie nicht sein, denn
.Values = Worksheets("Tabelle1").Range("K3:K496")
wird klaglos genommen und auch ausgeführt, wie ich sehen kann wenn ich ins Diagramm gehe und mir Datenquelle anschaue.
Achja Beverly, bei deinem Code kommt der 1004 bei ".Name", Abänderung in .Name = "=""mittel15""" brachte den gleichen Fehler.
Gruß
Reinhard

Anzeige
AW: Leider keine Lösung dabei :-(
07.08.2008 15:39:54
Beverly
Hi Reinhard,
also zumindest in 2003 funktioniert der Code fehlerlos. Excel 2000 habe ich allerdings z.Z. nicht da, kann ich erst heute Abend prüfen. Ich habe dir trotzdem mal die Beispielmappe angehängt, versuche es mal damit bei dir.
https://www.herber.de/bbs/user/54418.xls


Der Fehler liegt dann wohl...
07.08.2008 16:35:00
Beverly
Hi Reinhard,
...irgendwo in deiner Arbeitsmappe. Ich habe jetzt eine neue Arbeitsmappe mit Excel2000 erstellt und der Code läuft völlig fehlerfrei. Hier die 2000er Beispielmappe:
https://www.herber.de/bbs/user/54419.xls
Vielleicht kannst du deine Mappe mal hochladen, dann lässt es sich möglicherweise besser nachvollziehen.


Anzeige
AW: Der Fehler liegt dann wohl...
07.08.2008 16:50:00
Reinhard
Hallo Karin,
ich fühl mich wie immer *gg*, sehr unschuldig, ich hab unter Datei--Neu Arbeitsmappe ausgewählt, dann Alt+F11, Einfügen--Modul, dann dort den Code reinkopiert und dann im Code stehend F5 gedrückt.
Getestet ob sich das Makro wenn ich es per Button aufrufe annerster verhält habe ich noch nicht.
https://www.herber.de/bbs/user/54421.xls
Gruß
Reinhard

AW: Der Fehler liegt dann wohl...
07.08.2008 21:55:00
Beverly
Hi Reinhard,
ich habe in deiner Arbeitsmappe leider überhaupt nichts gefunden außer 3 leeren Tabellenblättern - weder Daten, noch einen Button, noch ein Modul noch einen Code. Wo sind die denn abgeblieben? Mal ein Tipp: seit ich ein mal die falsche Datei hochgeladen hatte, lade ich sie auch immer noch mal herunter um zu sehen, ob es auch die richtige ist. ;-))))))


Anzeige
AW: Der Fehler liegt dann wohl...
07.08.2008 22:31:00
Beverly
Hi Reinhard,
sry, habe den anderen Beitrag erst nach diesem hier gelesen. Eine leere Arbeitsmappe nützt logischerweise überhaupt nichts ;-), das könnte ich auch an einer von mir testen - gleichgültig welche Excelversion. Excel ist bei den Diagrammen sehr eigen, insbesondere auch wenn die Datenquelle leer ist. Erstelle mal von Hand ein Diagramm aus einem vollkommen leeren Zellbereich, der einen X-Wertebereich und 3 Datenreihen enthalten soll, indem du sofort auf "Fertigstellen" drückst - du wirst dich wundern, was dabei herauskommt - das Diagramm weist nur eine Datenreihe auf, da es nicht weiß, ob die Daten in Spalten oder in Reihen vorliegen. Folglich läuft der Code auch auf einen Fehler hinaus, weil einer 2. und 3. nicht vorhandenen Datenreihe weder Werte noch ein Name zugewiesen werden können. Excel handelt also aus eigener Sicht völlig logisch. Wenn du allerdings die Zuweisung ob Spalten- oder Reihenanordnung schon bei der Diagrammerstellung machst, funktionert der Code auch in einem leeren Tabellenblatt:
Ändere diese Codezeile

.SetSourceData Source:=Worksheets("Tabelle1").Range("A4:A496,K4:M496"), PlotBy:= _
xlColumns






Anzeige
AW: Der Fehler liegt dann wohl...
08.08.2008 07:40:00
Beverly
Hi Reinhard,
ich muss meine Aussage dahingehend korrigieren, dass sowohl in der X-Werte-Spalte als auch in allen 3 Y-Werte-Spalten mindestens 1 Wert vorhanden sein muss - in einem leeren Tabellenblatt habe ich keine Möglichkeit gefunden ein Diagramm zu erstellen und den Datenreihen die richtigen Bereiche/Namen zuzuweisen und somit den Code ohne Fehler ausführen zu lassen. In 2007 lief der Code zwar ohne Fehler, aber das erstellte Diagramm wies nicht die richtigen Zuweisungen auf.


Anzeige
AW: Der Fehler liegt dann wohl...
12.08.2008 06:31:07
Reinhard
Hallo Karin,
entschuldige bitte die verspätete Rückmeldung.
Ja, es muß pro Datenspalte mindestens ein Wert enthalten sein, dann ist der Fehler weg.
Danke für deine vielen Mühen
Gruß
Reinhard

AW: Leider keine Lösung dabei :-(
07.08.2008 16:40:00
Reinhard
Hallo Karin,
dankeschön, und ja das klappt perfekt auch mit meinem XL2000.
Teste ich aber den Code in einem Modul einer leeren Mappe kommt wieder 1004 bei .Name.
Du hast deine Tabelle mit Werten gefüllt, da klappt es.
In einer leeren Tabelle klappt es nicht.
Das würde ja heißen, mit "gefüllten" Zellen klappt es ?
Aber ich hatte ja schon mit gefüllten, also irgendwelche Zahlen, Datenzellen rumprobiert, klar nur mit A1:F7, aber das brachte auch nur 1004.
Viel Sinn dir eine leere Mappe hochzuladen die nur das Makro enthält sehe ich ich nicht, soll ich das machen?
Gruß
Reinhard
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige