Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Parameter ungültig - Laufzeitfehler 1004

Forumthread: Parameter ungültig - Laufzeitfehler 1004

Parameter ungültig - Laufzeitfehler 1004
24.07.2017 15:14:29
J-
Hallo zusammen,
ich habe ein Problem mit einem Teil meines Codes:
Dim position_p As Integer
Dim j As Integer
For j = 0 To years - 1
position_p = bestimmePerzentil(src_start_row + j, wert_jahre(j))
ActiveChart.FullSeriesCollection(j + 1).Points(position_p).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = color_selection
.Transparency = 0
.Solid
End With
Call beschriftung(j + 1, position_p, color_selection)
Next j
In der Zeile unter den eingefügten Fragezeichen wird immer Laufzeitfehler 1004 : Parameter ungültig ausgeworfen. Ich habe mit MsgBox überprüft, j wird richtig gezählt und position_p (in meinem Versuch bei Datenreihe 1 gleich 4) wird in der function bestimmePertenzil auch korrekt ermittelt.
Dennoch wird die Säule an der gewählten Datenreihe nicht korrekt eingefärbt.
Wenn ich
ActiveChart.FullSeriesCollection(1).Points(4).Select

direkt eintippe funktioniert es leider auch nicht. (Ich habe das nur einmal ausprobiert, da ich dachte, ich könne dadurch den Fehler verstehen.)
Bin für jede Hilfe dankbar!
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Parameter ungültig - Laufzeitfehler 1004
24.07.2017 15:36:55
Sven
Hi versuche es einmal mit
Dim position_p As Double
Grüße
Sven
AW: Parameter ungültig - Laufzeitfehler 1004
24.07.2017 16:23:04
J-
Die function bestimmePertenzil gibt mir aber einen Integer zurück...
Dann versuch long statt double (kwt)
24.07.2017 16:46:39
Zwenn
.
Anzeige
AW: Dann versuch long statt double (kwt)
24.07.2017 19:06:41
J-
...das Problem bleibt dasselbe
AW: Parameter ungültig - Laufzeitfehler 1004
24.07.2017 16:53:43
Tino
Hallo,
evtl. ist dieses Diagramm nicht aktiv?
Versuch es mal ohne Select indem Du die Tabelle und das Diagramm explizit angibst.
Nicht getestet!
With Tabelle1.ChartObjects("Diagramm 1").Chart
With .FullSeriesCollection(j + 1).Points(position_p).Format.Fill
.Visible = msoTrue
.ForeColor.RGB = color_selection
.Transparency = 0
.Solid
End With
End With

Gruß Tino
Anzeige
AW: Parameter ungültig - Laufzeitfehler 1004
24.07.2017 19:05:32
J-
Die chart ist aktiv, ich habe sie vor dem Einbinden von position_p noch bearbeiten können.
Auch eine Änderung Datentypen bringt nichts.
dann hilft nur eine Bsp. Datei
24.07.2017 19:08:02
Tino
Hallo,
Also bei mir gehts.
Da hilft nur eine Beispiel-Datei von dir.
Gruß Tino
AW: dann hilft nur eine Bsp. Datei
24.07.2017 19:10:43
J-
Ich weiß leider nicht, wie ich sie hochladen kann, da sensible Firmendaten drin sind...?
Anzeige
dann kann ich nicht helfen. oT.
24.07.2017 19:18:54
Tino
AW: dann kann ich nicht helfen. oT.
24.07.2017 19:27:15
J-
Ich hatte gehofft, du kannst mir verraten, wie ich die Daten anonymisieren kann ;)
Trotzdem Danke!
was für eine Frage...
24.07.2017 19:41:54
Tino
Hallo,
indem du die Daten die niemand was angeht durch andere ersetzt oder löschst.
Wichtig ist ja nur das dieses Problem bestehen bleibt.
Gruß Tino
Anzeige
Dazu muss man dort angemeldet sein, ...
25.07.2017 11:51:17
Luc:-?
…Luschi,
worauf ich bei derart „elitären“ Foren (mit „Karma“=AWer-Bewertung) gern verzichte*. Davon halte ich nämlich nichts, denn das öffnet Moderatoren-Mobbing Tür und Tor!
Bleibt ihm als Alternative zur Anmeldung nur das Code-Kopieren einer der vielen Varianten dort.
* Abgesehen mal davon, das ich so etwas wie das dort nicht benötige und für reine Kryptisierungs­Aufgaben schon seit Jahren Eigenes habe, das auch die Wortlängen obfuszieren kann → so etwas publiziere ich aber grundsätzlich nicht (hier im Archiv auch nur ein ErgebnisBsp ohne Urtext)!
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Dazu muss man dort angemeldet sein, ...
25.07.2017 17:47:34
J-
Ich habe sogar versucht, mich dort anzumelden, um die zip-Datei herunterladen zu können. Aber selbst nach 3 Anmeldeversuchen funktionierte es nicht, warum wurde mir nicht verraten... Danach habe ich es aufgegeben. Das war mir zu blöd!
Siehste, ist mir vor Jahren mal beim Xl-Center ...
25.07.2017 18:49:13
Luc:-?
…passiert, J-G,
und das MOF war früher auch mal anmeldefrei (deshalb sind dort evtl auch einige wenige uralte Beiträge von mir zu finden)…
Gruß, Luc :-?
Anzeige
Du bist da angemeldet, robert...? Gruß owT
28.07.2017 02:52:33
Luc:-?
:-?
Ist noch aus der Steinzeit.... :-) Gruß owT
28.07.2017 08:07:14
robert
Anzeige
ist so etwas wirklich notwendig?
25.07.2017 13:17:20
Tino
Hallo,
man kann doch einfach eine neue Datei verwenden um das Problem aufzuzeigen.
Einige notwendige Daten reinschreiben damit der Fehler herbeigeführt werden kann, fertig!
Das ganze drumherum wie z.Bsp. die Formel zur
kostenlosen, unbegrenzten Energie Gewinnung wird nicht benödigt! ;-)
Gruß Tino
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Parameter ungültig - Laufzeitfehler 1004 in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 1004 "Parameter ungültig" in Deinem Excel VBA-Code zu beheben, folge diesen Schritten:

  1. Überprüfe den Datentyp: Stelle sicher, dass der Datentyp von position_p korrekt ist. Ändere ihn gegebenenfalls zu Long, wie im Beitrag von Zwenn vorgeschlagen:

    Dim position_p As Long
  2. Vermeide die Verwendung von Select: Anstatt das Select-Kommando zu verwenden, arbeite direkt mit den Objekten. Ändere Deinen Code wie folgt:

    With Tabelle1.ChartObjects("Diagramm 1").Chart
       With .FullSeriesCollection(j + 1).Points(position_p).Format.Fill
           .Visible = msoTrue
           .ForeColor.RGB = color_selection
           .Transparency = 0
           .Solid
       End With
    End With
  3. Aktiviere das Diagramm: Stelle sicher, dass das Diagramm aktiv ist, wenn Du darauf zugreifen möchtest. Überprüfe, ob Du das Diagramm manuell aktivieren kannst, bevor der Code ausgeführt wird.

  4. Fehlerbehandlung einfügen: Füge eine Fehlerbehandlung in Deinen Code ein, um mehr Informationen im Falle eines Fehlers zu erhalten:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Fehler " & Err.Number & ": " & Err.Description

Häufige Fehler und Lösungen

  • Falscher Datentyp: Wenn position_p als Integer definiert ist, kann dies zu Problemen führen, insbesondere wenn die Punktezahl hoch ist. Verwende Long.

  • Diagramm nicht aktiv: Wenn das Diagramm nicht aktiv ist, kann der Zugriff auf die Punkte fehlschlagen. Stelle sicher, dass Du das Diagramm korrekt referenzierst.

  • Indexierung: Achte darauf, dass die Indizes, die Du verwendest, innerhalb der Grenzen der Datenreihe liegen. Überprüfe die Werte von j und position_p, um sicherzustellen, dass sie gültig sind.


Alternative Methoden

Wenn die oben genannten Lösungen nicht helfen, kannst Du folgende Alternativen ausprobieren:

  • Direktes Referenzieren: Statt ActiveChart zu verwenden, referenziere das Diagramm direkt über den Namen. Dies verhindert Verwirrung, wenn mehrere Diagramme vorhanden sind.

  • Daten anonymisieren: Wenn Du eine Beispiel-Datei erstellen möchtest, um das Problem zu demonstrieren, kannst Du sensible Daten anonymisieren. Ersetze persönliche Informationen durch Platzhalter.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um zu zeigen, wie Du Punkte in einem Diagramm einfärben kannst:

Sub FärbePunkte()
    Dim position_p As Long
    Dim j As Long
    Dim color_selection As Long
    color_selection = RGB(255, 0, 0) ' Rot

    For j = 0 To 3 ' Beispiel für 4 Jahre
        position_p = j + 1 ' Beispielwert für Position
        With Tabelle1.ChartObjects("Diagramm 1").Chart
            With .FullSeriesCollection(1).Points(position_p).Format.Fill
                .Visible = msoTrue
                .ForeColor.RGB = color_selection
                .Transparency = 0
                .Solid
            End With
        End With
    Next j
End Sub

Tipps für Profis

  • Debugging: Nutze Debug.Print, um Variablenwerte während der Ausführung zu überprüfen. Dies hilft, Probleme schneller zu identifizieren.

  • Verwende Named Ranges: Wenn Du häufig auf bestimmte Zellbereiche zugreifst, verwende benannte Bereiche, um die Lesbarkeit Deines Codes zu verbessern.

  • Modularer Code: Teile Deinen Code in kleinere, wiederverwendbare Funktionen auf. Dies macht das Debugging einfacher und verbessert die Wartbarkeit.


FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 1004?
Der Laufzeitfehler 1004 tritt auf, wenn ein ungültiger Parameter in einem VBA-Befehl verwendet wird, z.B. beim Zugriff auf Diagrammpunkte.

2. Wie kann ich meine Daten anonymisieren?
Ersetze sensible Informationen durch Platzhalter oder lösche sie, bevor Du Deine Datei zur Fehlersuche teilst.

3. Warum funktioniert der Code nicht, obwohl ich alles überprüft habe?
Es kann an der Struktur Deines Diagramms oder an den verwendeten Indizes liegen. Überprüfe, ob die Indizes innerhalb der Grenzen sind und ob das Diagramm wirklich aktiv ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige