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

Laufzeitfehler 1004: Select Methode

Forumthread: Laufzeitfehler 1004: Select Methode

Laufzeitfehler 1004: Select Methode
16.11.2015 16:20:16
Adrian
Hallo liebes Forum,
ich habe mal wieder ein Problemchen:
Mit folgendem Code möchte ich eine neue Arbeitsmappe erstellen, aus dem Hintergrund eine weitere Mappe öffnen und in dieser einige Spalten umstellen/filtern um das Ergebnis dann in die erste Mappe zu kopieren.

Sub MP_genUpdates_Click()
Dim FSyObjekt As Object, FObekt As Object, wsT As Worksheet, LZ As Double, assemble As Variant
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set FSyObjekt = CreateObject("Scripting.FileSystemObject")
Workbooks.Add
ActiveWorkbook.Sheets(1).Name = "Serial MP_Masterupdate"
Set wsT = Sheets(1)
Sheets(3).Delete
Sheets(2).Delete
Set assemble = GetObject("P:\...\SA_shared_reference.xls")
assemble.Sheets("SA-MP_Shared_reference").Columns("BC:BC").Insert shift:=xlToRight
assemble.Sheets("SA-MP_Shared_reference").Cells(1, 55).Value = "BTE involved"
assemble.Sheets("SA-MP_Shared_reference").Columns("BE:BE").Insert shift:=xlToRight
assemble.Sheets("SA-MP_Shared_reference").Cells(1, 57).Value = "FAL involved"
assemble.Sheets("SA-MP_Shared_reference").Columns("AU:AU").Insert shift:=xlToRight
assemble.Sheets("SA-MP_Shared_reference").Cells(1, 47).Value = "ESB-NCF involved"
assemble.Sheets("SA-MP_Shared_reference").Columns("AU:AU").Insert shift:=xlToRight
assemble.Sheets("SA-MP_Shared_reference").Cells(1, 47).Value = "ESB-FAF involved"
Dim Liste As Range
Set Liste = assemble.Sheets("SA-MP_Shared_reference").Range("A1:BF1")
Liste.AutoFilter
Liste.AutoFilter Field:=8, Criteria1:="EC"      'Eng Leader Center to EC
Liste.AutoFilter Field:=22, Criteria1:="2015"   'Year-CIN Creation Date to 2015
Liste.AutoFilter Field:=40, Criteria1:="Y"   'Corrective to Y
Liste.AutoFilter Field:=42, Criteria1:="Y"   'Extended Flow to Y
Set Liste = Nothing
' Blatt einfügen nach erstem Blatt und Inhalt von anderere Datei kopieren
assemble.Worksheets("SA-MP_Shared_reference").UsedRange.Copy
wsT.Paste
assemble.Close savechanges:=False
Set assemble = Nothing

in der GetObject zeile erhalte ich jedoch immer "Laufzeitfehler 1004: die Select-Methode des Worksheet-Objekts konnte nicht ausgeführt werden".
Kann mir jemand aus der Patsche helfen...? :)

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004: Select Methode
16.11.2015 16:38:22
Daniel
Hi
kann man davon ausgehen, das in deinem Originalcode die die Zeile mit dem GetObject kein "..." enthält sondern einen vorhandenen vollständigen Dateinamen mit Pfad?
wenn ja, enthält die Datei, welche du da öffnest (SA_shared_reference.xls) ein Workbook_Open-Eventmarko im Modul "DieseArbeitsmappe"?
Wenn ja, muss dieses ausgeführt werden oder ist die Ausführung dieses Workbook-Open-Events für deine Zwecke nicht erforderlich?
Gruß Daniel

Anzeige
AW: Laufzeitfehler 1004: Select Methode
17.11.2015 07:21:46
Adrian
Hallo Daniel,
ja du liegst goldrichtig. Den Pfad habe ich nur aus Gründen der Übersichtlichkeit eingekürzt, die Datei wird von Excel problemlos gefunden. Und ja, die Zieldatei enthält macros, die für meine Vorhaben allerdings nicht benötigt werden.
Wenn ich diese Datei normal öffne, muss ich auch jedes mal bestätigen, dass diese Datei aus einer vertrauenswürdigen Quelle stammt... Das wollte ich hier aber mit Application.DisplayAlerts umgehen...

Anzeige
AW: Laufzeitfehler 1004: Select Methode
17.11.2015 08:03:33
Daniel
Hi
Das Problem an dieser Stelle könnte sein, dass das Open-Eventmakro ein Select oder Activate enthält, welches aber nicht ausgeführt werden kann, weil GetObject die Mappe automatisch ausblendet.
Um diese Eventmakros auszuschalten, nimmt man Applications.EnableEvents = False
Achtung, diese Einstellung unbedingt innerhalb des Macros wieder auf den Ursprungswert zurücksetzen, da diese Einstellung nach Makroende erhalten bleibt.
Gruß Daniel

Anzeige
AW: Laufzeitfehler 1004: Select Methode
17.11.2015 09:45:09
Adrian
Hm, bei diesem Befehl stoppt VBA jedes mal mit "Laufzeitfehler 424 - Objekt erforderlich", egal ob ich den Befehl am Anfang des Codes oder direkt vor dem GetObject definiere...
Wird der nicht genauso benutzt wie z.B. Application.Screenupdating ?

AW: Laufzeitfehler 1004: Select Methode
17.11.2015 10:12:09
Adrian
Ohoh! Ich habe (voreilig wie ich bin) einfach den Befehl von dir copy&pasted.
Allerdings steckt da ein kleines "s" zuviel im Befehl :P
jetzt funktioniert es wunderbar - vielen Dank für den Tip!!!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 1004: Lösungen für die Select Methode in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 1004 zu beheben, folge diesen Schritten:

  1. Überprüfe den Dateipfad: Stelle sicher, dass der Pfad in der GetObject-Zeile korrekt angegeben ist. Ersetze P:\...\SA_shared_reference.xls durch den vollständigen Pfad.

    Set assemble = GetObject("C:\DeinPfad\SA_shared_reference.xls")
  2. Deaktiviere Event-Handler: Setze Application.EnableEvents = False am Anfang deines Codes, um Event-Makros zu deaktivieren, die den Fehler verursachen könnten. Vergiss nicht, dies am Ende des Codes wieder auf True zurückzusetzen.

    Application.EnableEvents = False
    ' Dein Code hier
    Application.EnableEvents = True
  3. Vermeide Select und Activate: Wenn du mit Objekten arbeitest, verwende direkte Referenzen anstelle von Select oder Activate, um den Code stabiler zu machen.


Häufige Fehler und Lösungen

1. Laufzeitfehler 1004: Select Methode kann nicht ausgeführt werden

  • Ursache: Das Problem kann auftreten, wenn ein Workbook_Open-Event-Makro ein Select oder Activate verwendet.
  • Lösung: Deaktiviere die Event-Ausführung mit Application.EnableEvents = False und stelle sicher, dass der Pfad korrekt ist.

2. Laufzeitfehler 424 - Objekt erforderlich

  • Ursache: Dieser Fehler tritt auf, wenn ein Objekt nicht korrekt angesprochen wird.
  • Lösung: Überprüfe, ob alle Objekte, wie wsT und assemble, korrekt initialisiert wurden, bevor du darauf zugreifst.

Alternative Methoden

  • Verwendung von Workbooks.Open: Anstelle von GetObject kannst du die Workbooks.Open-Methode verwenden, um die Arbeitsmappe zu öffnen. Dies kann die Handhabung von Event-Makros erleichtern.

    Dim assemble As Workbook
    Set assemble = Workbooks.Open("C:\DeinPfad\SA_shared_reference.xls")
  • Direkte Zellreferenzierung: Anstelle von Select kannst du direkt auf Zellen zugreifen, um den Code zu optimieren.

    wsT.Range("A1").Value = assemble.Sheets("SA-MP_Shared_reference").Cells(1, 1).Value

Praktische Beispiele

Hier ist ein einfaches Beispiel, um eine Arbeitsmappe zu öffnen und Daten zu kopieren, ohne Select oder Activate zu verwenden:

Sub BeispielOhneSelect()
    Dim assemble As Workbook
    Dim wsT As Worksheet

    Set wsT = ThisWorkbook.Sheets(1)
    Set assemble = Workbooks.Open("C:\DeinPfad\SA_shared_reference.xls")

    wsT.Range("A1").Value = assemble.Sheets("SA-MP_Shared_reference").Cells(1, 1).Value
    assemble.Close savechanges:=False
End Sub

Tipps für Profis

  • Verwende Option Explicit: Setze oben in deinem VBA-Modul Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Dokumentiere deinen Code: Kommentiere wichtige Abschnitte des Codes, um ihre Funktion schnell nachvollziehen zu können.
  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler elegant zu handhaben und die Ausführung fortzusetzen.

FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 1004? Der Laufzeitfehler 1004 tritt häufig auf, wenn Excel auf ein Objekt zugreifen möchte, das nicht verfügbar ist oder nicht korrekt angesprochen wird.

2. Wie kann ich Event-Makros in Excel deaktivieren? Verwende Application.EnableEvents = False am Anfang deines Codes und setze es am Ende wieder auf True.

3. Warum funktioniert GetObject nicht? Wenn die Datei ein Workbook_Open-Makro hat, kann es sein, dass dieses Makro Select oder Activate enthält, was zu Problemen führen kann. Verwende in diesem Fall Workbooks.Open oder deaktiviere die Events.

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