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

Forumthread: Laufzeitfehler 1004 Anwendungs- oder objektdefinie

Laufzeitfehler 1004 Anwendungs- oder objektdefinie
08.06.2015 12:07:21
Crizz
Hallo zusammen,
ich habe ein Problem mit meinem Code und zwar kommt beim ausführen des Makros die Fehlermeldung :"Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler"
Mit dem Code möchte ich das die Daten vom worksheet"Page1_1" ohne Überschrift in das Sheet"Tabelle1" unter die vorhandenen Daten reinkopiert.
Ich verstehe nur nich was das Problem am Code ist.
  • 
    Sub DatenHolen()
    Dim WBZiel As Workbook, ExportDatei As Variant
    Dim WBQuelle As Workbook, WSQuelle As Worksheet, WSZiel As Worksheet
    Dim to_Ziel As Long
    Dim to_Quelle As Long
    Set WBZiel = ThisWorkbook
    'DateiÖffnen Dialog anbieten
    ExportDatei = Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xlsx),*.xlsx", , " _
    Bitte die Datei xyz.xlsx öffnen ...")
    ExportDatei = CStr(ExportDatei)
    If ExportDatei = "Falsch" Then Exit Sub
    'öffnen der ausgewählten Datei
    Set WBQuelle = Workbooks.Open(ExportDatei)
    Set WSQuelle = WBQuelle.Sheets("Page1_1")
    to_Quelle = WSQuelle.Cells(Rows.Count, 1).End(xlUp).Row
    'Kopieren der Tabelle "Page1_1" aus Datei „xyz“ in "Tabelle1"
    Set WSZiel = WBZiel.Sheets("Tabelle1")
    to_Ziel = WSZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
    WSQuelle.Range("A2", "R" & to_Quelle).Copy WSZiel.Cells(to_Ziel, "A").PasteSpecial
    Set WBZiel = Nothing
    Set WBQuelle = Nothing
    End Sub
    


  • Für eure Hilfe bin ich sehr dankbar
    Gruß Chris

    Anzeige

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Laufzeitfehler 1004 Anwendungs- oder objektdefinie
    08.06.2015 12:11:19
    Rudi
    Hallo,
    WSQuelle.Range("A2:R & to_Quelle).Copy
    WSZiel.Range("A" & to_Ziel).PasteSpecial xlPasteValues
    Gruß
    Rudi

    AW: Laufzeitfehler 1004 Anwendungs- oder objektdefinie
    08.06.2015 13:59:43
    Daniel
    Hi
    entweder:
    WSQuelle.Range("A2", "R" & to_Quelle).Copy Destination:=WSZiel.Cells(to_Ziel, "A")
    
    oder wie schon gezeigt:
    WSQuelle.Range("A2", "R" & to_Quelle).Copy
    WSZiel.Cells(to_Ziel, "A").PasteSpecial xlPasteAll
    
    wobei du bei Quelle.Copy Destination:=Ziel nur immer alles kopieren kannst (Formeln und Formate).
    bei der zweizeiligen Variante mit Copy / PasteSpecial kannst du über den Parameter (xlpasteAll/xlpasteValues usw) steuern, was du einfügst.
    Deswegen darf bei Copy+Destination auch kein weiterer Paramter stehen, weil es diese Auswahlmöglichkeiten nicht gibt.
    Die Benennung des Parameters Desination:= kannst du auch weglassen.
    Gruß Daniel

    Anzeige
    AW: Laufzeitfehler 1004 Anwendungs- oder objektdefinie
    09.06.2015 07:38:24
    Crizz
    Danke euch beiden es funktioniert! :)
    ;

    Forumthreads zu verwandten Themen

    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

    Um den laufzeitfehler 1004 in Deinem Excel VBA-Code zu beheben, folge diesen Schritten:

    1. Code überprüfen: Achte darauf, dass die Bezüge auf die Arbeitsblätter und Zellen korrekt sind. Dein Code sollte beispielsweise sicherstellen, dass die Arbeitsblätter existieren, bevor du darauf zugreifst.

    2. Korrekte Syntax verwenden: Stelle sicher, dass die Syntax korrekt ist. Ein häufiges Problem ist die Verwendung von "&" für die Verkettung. Beispiel:

      WSQuelle.Range("A2:R" & to_Quelle).Copy WSZiel.Cells(to_Ziel, "A")
    3. Makros aktivieren: Vergewissere Dich, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Einstellungen für Makros und aktiviere die entsprechenden Optionen.

    4. Fehlerbehandlung implementieren: Verwende Fehlerbehandlungsroutinen, um spezifische Fehler abzufangen:

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

    Häufige Fehler und Lösungen

    Einige häufige Ursachen für den laufzeitfehler 1004 sind:

    • Falscher Arbeitsblattname: Überprüfe, ob der Arbeitsblattname richtig geschrieben ist. Ein Tippfehler kann dazu führen, dass Excel den Fehler nicht finden kann.

    • Zielzelle außerhalb des Bereichs: Wenn Du versuchst, Daten in eine Zelle zu kopieren, die nicht existiert (z.B. Zeile > 1048576), tritt der Fehler auf.

    • Nicht vorhandene Range: Stelle sicher, dass die Range, die Du kopieren möchtest, tatsächlich existiert. Überprüfe to_Quelle und to_Ziel.


    Alternative Methoden

    Wenn Du weiterhin Probleme mit dem laufzeitfehler 1004 hast, gibt es alternative Methoden:

    1. Verwendung von PasteSpecial:

      WSQuelle.Range("A2:R" & to_Quelle).Copy
      WSZiel.Cells(to_Ziel, "A").PasteSpecial xlPasteValues
    2. Direktes Zuweisen:

      WSZiel.Cells(to_Ziel, "A").Resize(to_Quelle - 1, 18).Value = WSQuelle.Range("A2:R" & to_Quelle).Value

    Diese Methoden können helfen, den vba laufzeitfehler 1004 zu vermeiden.


    Praktische Beispiele

    Hier ist ein einfaches Beispiel, das den laufzeitfehler 1004 vermeiden sollte:

    Sub DatenHolen()
        Dim WBZiel As Workbook, WBQuelle As Workbook
        Dim WSQuelle As Worksheet, WSZiel As Worksheet
        Dim to_Ziel As Long, to_Quelle As Long
    
        Set WBZiel = ThisWorkbook
        Set WBQuelle = Workbooks.Open("Pfad\zu\deiner\Datei.xlsx")
        Set WSQuelle = WBQuelle.Sheets("Page1_1")
        Set WSZiel = WBZiel.Sheets("Tabelle1")
    
        to_Quelle = WSQuelle.Cells(Rows.Count, 1).End(xlUp).Row
        to_Ziel = WSZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
    
        WSQuelle.Range("A2:R" & to_Quelle).Copy
        WSZiel.Cells(to_Ziel, "A").PasteSpecial xlPasteValues
    End Sub

    Vergewissere Dich, dass alle Arbeitsblätter existieren und die Datei ordnungsgemäß geöffnet wird.


    Tipps für Profis

    • Nutze Option Explicit am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Tippfehler in Variablennamen zu vermeiden, die auch zu einem excel vba laufzeitfehler 1004 führen können.

    • Führe Deinen Code schrittweise im Debugger aus, um den genauen Punkt zu finden, an dem der Fehler auftritt.

    • Verwende MsgBox oder Debug.Print, um Werte von Variablen während der Ausführung des Codes anzuzeigen. Dies kann helfen, die Ursache des Fehlers schneller zu identifizieren.


    FAQ: Häufige Fragen

    1. Was bedeutet der Laufzeitfehler 1004?
    Der Laufzeitfehler 1004 ist ein allgemeiner Fehler in Excel, der auftritt, wenn ein Anwendungs- oder objektdefinierter Fehler auftritt, beispielsweise beim Zugriff auf nicht vorhandene Objekte oder Bereiche.

    2. Wie kann ich den Laufzeitfehler 1004 debuggen?
    Nutze die Debugging-Funktion in VBA, um den Code Zeile für Zeile auszuführen. Achte insbesondere auf die Zeilen, die auf Arbeitsblätter oder Zellbereiche zugreifen.

    3. Kann ich den Fehler ohne VBA beheben?
    Ja, häufige Probleme im Excel-Interface, wie falsche Zellreferenzen oder nicht vorhandene Arbeitsblätter, können auch ohne VBA korrigiert werden.

    4. Was soll ich tun, wenn der Fehler weiterhin besteht?
    Überprüfe den gesamten Code auf mögliche Tippfehler und führe Tests mit vereinfachten Versionen des Codes durch, um das Problem einzugrenzen.

    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