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

Fehler 1004

Fehler 1004
28.07.2017 12:07:31
J-
Hallo zusammen,
mein Makro zur Erstellung von Grafiken wirft mir zweimal den Fehler 1004 aus (s. Anmerkung im Code)... Bin schon völlig verzweifelt! Sieht jemand den Fehler?
Auszuführen ist die sub branchendaten_formatieren.
Datei: https://www.herber.de/bbs/user/115104.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: Fehler 1004
28.07.2017 12:17:06
Werner
Hallo,
deine Variable nameYears(i) ist leer.
Gruß Werner
AW: Fehler 1004
28.07.2017 12:27:42
J-
Die Messagebox zeigt mir doch aber den korrekten Wert für years()...
'alle Datenreihen einfügen
Dim i As Integer
MsgBox nameYears(0)
For i = 0 To years
'+++++++ Parameter ungültig ++++++++
ActiveChart.FullSeriesCollection(i + 1).Name = nameYears(i)
Next i

AW: Fehler 1004
28.07.2017 12:48:27
mmat
wie ist nameYears() deklariert?
AW: Fehler 1004
28.07.2017 12:52:04
J-
In branchendaten_formatieren:
'Array für Jahre
Dim years(10) As String
Dim h As Integer
For h = 0 To countRows(row)
If Cells(row + h, 1) Like "Jahr*" Then
Dim position As Integer
position = 0
Dim j As Integer
For j = 2 To countYears(row + h) + 1
years(position) = Cells(row + h, j)
position = position + 1
Next j
End If
Next h

Anzeige
AW: Fehler 1004
28.07.2017 12:59:22
mmat
nee, ich meine "nameYears". Des was in der msgbox funktioniert und unten einen Fehler bringt.
Achso: sorry, hab die Beispieldatei (aus Zeitgründen) nicht runtergeladen und analysiert.
   Dim i As Integer
MsgBox nameYears(0)
For i = 0 To years
'+++++++ Parameter ungültig ++++++++
ActiveChart.FullSeriesCollection(i + 1).Name = nameYears(i)
Next i

AW: Fehler 1004
28.07.2017 13:09:01
J-
nameyears wird bei Aufruf von grafik_erzeugen übergeben:
Call grafik_erzeugen(row, rowToUse + 1, "B", rowToUse + countYears(row + 1), "U", title, y_axis_title, gesamtw, countYears(row + 1), years())

Sub grafik_erzeugen(row As Integer, src_start_row As Integer, src_start_clm As String, src_end_row As Integer, src_end_clm As String, title As String, y_axis_title As String, gesamtw As Boolean, years As Integer, nameYears() As String)

Anzeige
AW: Fehler 1004
28.07.2017 14:25:44
mmat
Hallo,
ja, eigentlich ist an deinem Code nix auszusetzen. Ich glaube nicht, dass das an "nameYears(i)" liegt.
Ich würde mir mal die betroffenen Objekte "FullSeriesCollection(i + 1)" mit i wo der Fehler auftritt, genauer angucken.
Leider kann ich hierbei nicht helfen, da meine Excelversion offensichtlich "FullSeriesCollection" nicht kennt ... Daher hat mir die Beispielmappe die ich mir endlich mal angeguckt hab auch nicht geholfen.
sorry
vg, MM
AW: Fehler 1004
28.07.2017 16:03:54
J-
Trotzdem DANKE für die Hilfe!
Dass deine Version den Befehl nicht kennt, liegt daran, dass du nicht die aktuellste Version hast. Aber das weißt du sicher selbst;)
Anzeige
AW: Fehler 1004
28.07.2017 14:35:45
Firmus
Hi J-G,
"ActiveChart.FullSeriesCollection(i + 1).Name = nameYears(i)"
Dimensionen:
nameyears(0-4)
...Collection(1-4)
Verhalten:
Bei i=4 (in der Schleife) sprichst Du ...collection(i+1) an.
Damit sprichst Du Collection(5) an. Die gibt es aber nicht.
Gruß
Firmus
AW: Fehler 1004
28.07.2017 18:54:18
J-
Super, jetzt geht es!
Allerdings zeichnet die letzte Grafik nicht eino. Erkennst du, woran das liegt?
AW: Fehler 1004
29.07.2017 16:22:55
firmus
Hi J-G,
da muss ich passen, da ich den Originalaufruf nicht kenne, und in der SUB "test" "berechnePerzentile" als "Sub oder Function nicht definiert" reklamiert wird.
Ich konnte den Fehler ermitteln, indem ich den Aufruf der SUB "grafik_erzeugen" extrahiert habe.
Der ganz normale Aufruf Step-by-Step Durchlauf funktioniert nicht, da Parameter angegeben sind.
D.h., die SUB "grafik_erzeugen" muss über eine andere Sub (mit Parametern) aufgerufen werden - dann klappt es.
Meine Methode:
1. Parameter bei der Definition der SUB "grafik_erzeugen" entfernen.
2. SUB "grafik_erzeugen" aufrufen mit F5 (ohne stop).
3. Die erwartete Fehlermeldung tritt auf.
4. unmittelbar vor der fehlerhaften Instruktion: "SET ERROR GoTo Fehlerroutine." einfügen.
5. Error-Routine einrichten:
Fehlerroutine:
msgbox Err.Number
4. Beteiligte Variablen, deren Inhalt nicht 100% sicher ist, im Überwachungsfenster anzeigen lassen.
(mit dem Brille-Icon). System-Variable Err.Number nicht vergessen!!
5. "msgbox Err.Number" für STOP markieren (F9).
So gelingt es mit Run(F5) die SUB anlaufen zu lassen.
6. Damit bleibt die Ausführung zu dem Zeitpunkt wenn der Fehler passiert stehen.
a) Alle relevanten Variablen können im Überwachungsfenter geprüften werden.
b) Auf Schleifenanzahl (Laufvariable n+1) und Ausprägung (im Überwachungsfenster (n Anzahl Elemente)
achten. Wenn index "n+1" von "n" Elementen angezeigt werden soll kommt der Fehler.
7. Durch Prüfen der Variablen zum Zeitpunkt "6." läßt sich der Fehler gut erkennen.
Noch nicht ins ÜW-Fenster gesetzte Variablen können jederzeit nachgesetzt werden,während des Stops.
8. Ggfls. können in einen Loop noch Stops (zB. bei einer Dummyinstruktion "i=i")eingefügt werden,
um bei jedem Durchlauf zu stoppen und zu prüfen.
Ich hoffe dieser kleine Leitfaden versetzt Dich in die Lage den noch vorhandenen Fehler selbst schnell zu finden.
Gruß,
Firmus
PS: Für den Datenschutz sollten in den XLS-Optionen, Trustcenter, entsprechende Einstellungen gemacht werden.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige