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

Laufzeitfehler mit Range(cells(),cells()).copy

Forumthread: Laufzeitfehler mit Range(cells(),cells()).copy

Laufzeitfehler mit Range(cells(),cells()).copy
09.06.2003 15:00:13
Norbert
Hallo!

Kann mir bitte jemand erklären, weshalb Code_1 funktioniert, aber Code_2 den Laufzeitfehler '1004': "Anwendungs- oder objektdefinierter Fehler" generiert? Eigentlich müßten doch beide Codes zum gleichen Ergebnis kommen.

Code_1:

Worksheets("Blatt1").Range("F5:H46").Copy Destination:=Worksheets("Blatt2").Range("A1")

Code_2:

Worksheets("Blatt1").Range(Cells(5, 6), Cells(46, 9)).Copy Destination:=Worksheets("Blatt2").Range("A1")

Aus bestimmten Gründen bin ich auf die Syntax mit cells() angewiesen. Deshalb wäre ich über einen Hinweis auf den Fehler sehr dankbar!

Ciao,
Norbert

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Laufzeitfehler mit Range(cells(),cells()).copy
09.06.2003 15:27:38
heinerv

hallo Norbert,

auf den ersten Blick fehlt eine öffnende Klammer:

Worksheets("Blatt1").Range((Cells(5, 6), Cells(46, 9)).Copy Destination:=Worksheets("Blatt2").Range("A1")


und zwar hier: Worksheets("Blatt1").Range((


Gruß
heinerv


thx, aber meine Klammern sind wohl ok
09.06.2003 15:47:41
Norbert

Bei Dir ist die Summe der Klammern ungerade, was ja nicht sein dürfte.

Anzeige
Re: Laufzeitfehler mit Range(cells(),cells()).copy
09.06.2003 15:58:48
ChrisL

Hi Norbert

Als 'Trockenübung' funktionieren bei mir beide Codes. Kann es sein, dass du den Code einmal aus einem Standartmodul und das andere mal aus einem Klassenmodul (z.B. CommandButton) heraus ausgeführt hast. Bei mir in Excel 97 habe ich nämlich das Problem, dass die Copy-Geschichte nur im Modul funktioniert.

Wenn du nur auf Werte, nicht aber auf die Formatierung aus bist, könntest du es auch mal mit einer Gleichung probieren.

Worksheets("Blatt2").Range("A1:D42").Value = Worksheets("Blatt1").Range(Cells(5, 6), Cells(46, 9)).Value

Gruss
Chris

Anzeige
Re: Laufzeitfehler mit Range(cells(),cells()).copy
09.06.2003 16:04:42
Georg_Zi

Hallo Norbert

ich mußte jetzt erstmal eine Weile Testen bis ich auf den Fehler kam. Folgendes ist ist das Blatt1 nicht Aktiv bezieht sich Cells auf das aktrive blatt und das geht nicht. Man könnte schreiben
Worksheets("Blatt1").Range(Worksheets("Blatt1").Cells(5, 6), Worksheets("Blatt1").Cells(46, 9)).Copy Destination:=Worksheets("Blatt2").Range("A1")

oder

Gruß Hajo

Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel



Anzeige
Re: Laufzeitfehler mit Range(cells(),cells()).copy
09.06.2003 16:13:39
Norbert

Hi Chris!

Ich verwende den Code innerhalb eines Activate-Ereignisses:

Private Sub Worksheet_Activate()

Worksheets("Blatt1").Range(Cells(5, 6), Cells(46, 9)).Copy Destination:=Worksheets("Blatt2").Range("A1")

End Sub

Dein Vorschlag produziert aber leider den gleichen Laufzeitfehler '1004': "Anwendungs- oder objektdefinierter Fehler" :-(

Trotzdem, besten Dank!

Ciao,
Norbert

Anzeige
Besten Dank, das war's!! (mkT)
09.06.2003 16:17:51
Norbert

Hi Hajo!

Es lag tatsächlich daran, daß ich diesen Code als Activate-Ereignis dem Blatt_2 zugewiesen habe.

Besten Dank!

Norbert

;

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

Infobox / Tutorial

Laufzeitfehler mit Range(cells(),cells()).copy beheben


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel (drücke ALT + F11).
  2. Erstelle ein neues Modul oder öffne das bestehende Modul, in dem du deinen Code hast.
  3. Verwende die korrekte Syntax für die Range- und Cells-Funktion. Ein Beispiel für die richtige Verwendung wäre:
    Worksheets("Blatt1").Range(Worksheets("Blatt1").Cells(5, 6), Worksheets("Blatt1").Cells(46, 9)).Copy Destination:=Worksheets("Blatt2").Range("A1")
  4. Stelle sicher, dass das Arbeitsblatt aktiv ist, wenn du die Cells-Funktion verwendest, oder referenziere das Arbeitsblatt direkt, wie im obigen Beispiel.
  5. Teste den Code, um sicherzustellen, dass der Laufzeitfehler '1004' nicht mehr auftritt.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler '1004'
    Ursache: Der Code bezieht sich auf das aktive Blatt, wenn das Zielblatt nicht aktiv ist.
    Lösung: Verwende die vollständige Referenz wie in den Beispielen oben.

  • Fehler bei Klammern
    Stelle sicher, dass die Klammern korrekt gesetzt sind, da ungerade Klammern zu Fehlern führen können.


Alternative Methoden

Falls du nur die Werte und nicht die Formatierungen kopieren möchtest, kannst du folgende Methode verwenden:

Worksheets("Blatt2").Range("A1:D42").Value = Worksheets("Blatt1").Range(Worksheets("Blatt1").Cells(5, 6), Worksheets("Blatt1").Cells(46, 9)).Value

Diese Methode vermeidet Probleme mit Copy und kann einfacher zu handhaben sein.


Praktische Beispiele

  1. Kopieren eines bestimmten Bereichs:

    Worksheets("Blatt1").Range(Worksheets("Blatt1").Cells(1, 1), Worksheets("Blatt1").Cells(10, 5)).Copy Destination:=Worksheets("Blatt2").Range("A1")
  2. Werte kopieren ohne Formatierungen:

    Worksheets("Blatt2").Range("A1").Value = Worksheets("Blatt1").Cells(5, 6).Value

Tipps für Profis

  • Nutze With-Anweisungen, um den Code lesbarer zu machen:

    With Worksheets("Blatt1")
       .Range(.Cells(5, 6), .Cells(46, 9)).Copy Destination:=Worksheets("Blatt2").Range("A1")
    End With
  • Überprüfe die Version von Excel, da unterschiedliche Versionen (z.B. Excel 97, Excel XP) unterschiedliche Verhaltensweisen haben können, insbesondere bei der Handhabung von Objekten.


FAQ: Häufige Fragen

1. Warum funktioniert Cells.Copy nicht in meinem Code?
Die Cells-Referenz muss immer auf das entsprechende Arbeitsblatt angewendet werden. Andernfalls verweist sie auf das aktive Blatt, was zu Fehlern führen kann.

2. Was kann ich tun, wenn der Fehler weiterhin auftritt?
Überprüfe die Klammerung und stelle sicher, dass du die richtige Syntax verwendest. Teste den Code in einem Standardmodul, da manche Referenzen in Klassenmodulen problematisch sein können.

3. Welche Version von Excel sollte ich verwenden?
Die Beispiele und Lösungen wurden in Excel 97 und Excel XP getestet. Es ist empfehlenswert, die neueste Version von Excel zu verwenden, um die besten Ergebnisse zu erzielen.

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