Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1388to1392
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Copy-Paste wirft Fehlermeldung aus

Copy-Paste wirft Fehlermeldung aus
22.10.2014 23:13:53
Sebastian
Hallo in die Runde
Ich möchte aus einem Tabellenblatt Daten eines Bereichs (zwei Spalten) auswählen und in ein anderes Tabellenblatt kopieren.
Dazu wird in der Tabelle "ÜL" zunächst geprüft, wie viele Einträge vorhanden sind und anschließend der Bereich mit Einträgen von oben links (also quasi Zelle A2) bis unten rechts (Anzahl der Zeilen mit Einträgen, Spalte 2) kopiert.
Dieser Inhalt soll nun im Tabellenblatt "Druckdaten" ab der Zelle 5,3 (C5) eingefügt werden.
Dazu mein Quellcode:
i=2
Do Until Worksheets("ÜL").Cells(i, 1) ""
i = i + 1
Loop
Worksheets("ÜL").Range(Cells(2, 1), Cells(i, 2)).Copy (Worksheets("Druckdaten").Range(Cells(5, 2)))

-----
Ausgeführt ergibt dies immer Laufzeitfehler 1004, aber WO liegt der Fehler? :(
Ich freue mich über hilfreiche Hinweise und danke bereits jetzt :)
Gruß
Sebastian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
2 Fehler
22.10.2014 23:25:22
{Boris}
Hi Sebastian,
abgesehen davon, dass Deine Do-Loop-Schleife die langsamste aller Möglichkeiten ist, möchtest Du doch die letzte (lückenlos) gefüllte Zelle in Spalte A des Blattes ÜL ermitteln.
Da Du auf ungleich "" prüfst, musst Du Until durch While ersetzen.
Dein Fehler kommt aber von der Anweisung Range(Cells(5, 2)). Entweder schreibst Du Range("B5") oder Cells(5,2) - aber keinesfalls Dein Konstrukt ;-)
VG, Boris

AW: 2 Fehler
23.10.2014 02:07:54
Sebastian
Hallo Boris
Vielen Dank für deine Antwort.
Leider führen beide von Dir angeführten Möglichkeiten zum gleichen Fehler (Laufzeitfehler 1004).
Wenn ich jeder Zelle manuell den Wert der anderen zuweise, dann funktioniert es - aber nicht mittels copy :(
Weitere Tipps?
Gruß
Sebastian
PS: Wenn meine Do-Loop-Variante so langsam ist - wie wäre es denn schneller oder besser? ;) (Auch hier bin ich für nützliche Tipps dankbar.)

Anzeige
AW: 2 Fehler
23.10.2014 02:16:11
Sebastian
Ausprobiert und Lösung gefunden!
Der Code
Worksheets("ÜL").Range(Cells(2, 1), Cells(i - 1, 2)).Copy (Worksheets("Druckdaten").Cells(5, 2))
funktioniert nicht und führt zur besagten Fehlermeldung.
Die Abwandlung
Worksheets("ÜL").Select
Range(Cells(2, 1), Cells(i - 1, 2)).Copy (Worksheets("Druckdaten").Cells(5, 2))
hingegen funktioniert.
Es muss scheinbar vorher das Tabellenblatt selektiert werden - mittels Direktansprache funktioniert es nicht.
Somit Problem gelöst, aber den Hinweis auf die schnellere bzw. ordentlichere Methode zur Ermittlung der nächsten freien Zeile hätte ich dennoch gerne noch :)

Anzeige
AW: 2 Fehler
23.10.2014 08:14:13
Luschi
Hallo Sebastian,
und das Gemeine daran ist, das in keiner Vba-Hilfe (Excel 2002 - 2013) auf diesen Umstand hingewiesen wird. Dieser Programmcode läuft übrigens tadellos, wenn man die Kopierprozedur in das Klassenmodul der entsprechenden Tabelle verschiebt - dann ist die Selektiererei nicht erforderlich, auch wenn eine ganz andere Tabelle auf dem Bildschirm aktiv ist.
Beispiel: Im Klassenmodul der Tabelle 'ÜL' ist definiert:

Sub Kopieren()
Worksheets("xyz").Select  'ja auch das geht!!!
Worksheets("GÜ").Range(Cells(2, 2), Cells(4, 5)).Copy Worksheets("Druckdaten").Cells(5, 2)
End Sub
Aus einem normalen Modul kann man dann die Routine so starten:
Worksheets("GÜ").Kopieren
Grup von Luschi
aus klein-Paris
PS: wegen der lezten belegten Zelle in einer Zeile siehe hier:
http://www.excel-inside.de/vba-loesungen/zellen-a-bereiche/337-letzte-zeile-letzte-spalte-und-letzte-zelle-per-vba-ermitteln
Anzeige

22 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige