Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Laufzeitfehler 1004

Laufzeitfehler 1004
24.10.2008 19:28:12
Chris
Servus Forum,
weiß jemand, warum bei diesem makro Laufzeitfehler 1004 auftritt ?

Sub lö()
For i = 1 To ActiveSheet.OLEObjects.Count
ActiveSheet.OLEObjects(i).Delete
Next i
End Sub


Es werden z.b. von 5 OleObjects(verschiedene ComboBox, textBox, commandButton, checkbox) 3 gelöscht und dann kommt der Laufzeitfehler
Die OLE-Objects-Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden
Gruß
chris

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004
24.10.2008 19:34:00
Erich
Hallo Chris,
wenn von den 5 Objekten drei gelöscht sind - gibt es dann noch OLEObjects(4) und OLEObjects(4)?
Da gibt es zwei Möglichkeiten:

For i = 1 To ActiveSheet.OLEObjects.Count
ActiveSheet.OLEObjects(1).Delete
Next i
'oder
For i = ActiveSheet.OLEObjects.Count to 1 step - 1
ActiveSheet.OLEObjects(i).Delete
Next i

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Danke Erich...
25.10.2008 11:38:00
Chris
... wie immer mal Step -1. Das vergess ich so häufig.
Gruß
Chris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 1004 in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Identifiziere den Fehler: Der Laufzeitfehler 1004 tritt häufig auf, wenn ein Makro versucht, auf ein Objekt zuzugreifen, das nicht mehr existiert. In deinem Fall könnte das bedeuten, dass du versuchst, ein OLE-Objekt zu löschen, das nicht mehr verfügbar ist.

  2. Überprüfe die Schleife: Achte darauf, wie du die Schleife zur Löschung der OLE-Objekte implementierst. Verwende eine der folgenden Methoden:

    ' Variante 1
    For i = 1 To ActiveSheet.OLEObjects.Count
       ActiveSheet.OLEObjects(1).Delete
    Next i
    
    ' Variante 2
    For i = ActiveSheet.OLEObjects.Count To 1 Step -1
       ActiveSheet.OLEObjects(i).Delete
    Next i

    Die zweite Variante (Schritt -1) ist sicherer, da sie von hinten nach vorne zählt und somit die Indizes der verbleibenden Objekte nicht beeinflusst.

  3. Teste das Makro: Führe das Makro nach den Änderungen erneut aus und prüfe, ob der Fehler weiterhin auftritt.


Häufige Fehler und Lösungen

  • Problem: Laufzeitfehler 1004 bei der Löschung von OLE-Objekten.

    • Lösung: Stelle sicher, dass du die Schleife rückwärts durchläufst (Schritt -1), um sicherzustellen, dass die Indizes der verbleibenden Objekte korrekt bleiben.
  • Problem: Fehlermeldung „Die OLE-Objects-Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden“.

    • Lösung: Überprüfe, ob die OLE-Objekte, auf die du zugreifen möchtest, noch existieren, bevor du versuchst, sie zu löschen.

Alternative Methoden

  • Verwendung von On Error Resume Next: Du kannst den Fehler temporär ignorieren, indem du diese Zeile hinzufügst. Das kann helfen, die Ausführung des Makros nicht zu stoppen, wenn ein Objekt nicht mehr existiert.

    On Error Resume Next
    ActiveSheet.OLEObjects(i).Delete
    On Error GoTo 0
  • Verwendung von With-Anweisung: Um den Code übersichtlicher zu gestalten, kannst du die With-Anweisung verwenden:

    With ActiveSheet
       For i = .OLEObjects.Count To 1 Step -1
           .OLEObjects(i).Delete
       Next i
    End With

Praktische Beispiele

Hier ist ein Beispiel, wie du den Laufzeitfehler 1004 in einem realen Szenario vermeiden kannst:

Sub RemoveAllOLEObjects()
    Dim i As Long
    With ActiveSheet
        For i = .OLEObjects.Count To 1 Step -1
            .OLEObjects(i).Delete
        Next i
    End With
End Sub

In diesem Beispiel wird das Makro sicher alle OLE-Objekte im aktiven Arbeitsblatt löschen, ohne einen Laufzeitfehler zu erzeugen.


Tipps für Profis

  • Debugging: Nutze die Debugging-Tools von Excel, wie den „Schritt für Schritt“-Modus, um genau zu sehen, wo der Fehler auftritt.

  • Objektprüfung: Implementiere vor der Löschung eine Überprüfung, ob das OLE-Objekt noch vorhanden ist:

    If Not ActiveSheet.OLEObjects(i) Is Nothing Then
       ActiveSheet.OLEObjects(i).Delete
    End If
  • Makros optimieren: Halte deine Makros sauber und gut strukturiert, um Fehlerquellen zu minimieren.


FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 1004? Der Laufzeitfehler 1004 tritt auf, wenn Excel ein Problem mit dem Zugriff auf ein Objekt hat, z.B. wenn ein OLE-Objekt nicht gefunden werden kann.

2. Wie kann ich Laufzeitfehler in Excel VBA vermeiden? Verwende stets eine Rückwärtszählung in Schleifen, um sicherzustellen, dass du die Indizes nicht durcheinanderbringst, und implementiere Fehlerbehandlungsroutinen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige