Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
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

range(cells(),cells()) copy paste

range(cells(),cells()) copy paste
15.08.2014 08:40:14
Daniel
Hallo zusammen,
Ich weiss, dass zu diesem Thema schon viel geschrieben wurde, trotzdem lässt sich (selbst nach stundenlangen Suchen) der folgende "Fehler" nicht beheben:
Ziel: Ich möchte aus einem Excel Sheet ("ThisWorlbook") drei verschiedenen Tabellen in ein neues Workbook ("ActiveWorkbook") hineinkopieren und dann ein pdf File erstellen.
Problem:
Sub ExcelToPDF()
'Variablen
Dim k, i As Integer 'zeigt an wo bzw. welcher Teil der Tabelle ins "erschaffene" Workbook  _
hineinkopiert werden soll
'Neue Datei erstellen
Workbooks.Add
'Bereich in neue Datei kopieren
ThisWorkbook.Sheets("DNEL Results").Range("B3:G24").Copy Range("A3") 'Kommentar: funktionier  _
problemlos
ThisWorkbook.Sheets("DNEL Results").Range(Sheets("DNEL Results").Cells(3, 2), Sheets("DNEL  _
Results").Cells(60*i, 2)).Copy ActiveWorkbook.Sheets("Tabelle1").Range(Sheets("Tabelle1").Cells(60 * k, 1))
Fehleranzeige 1: "Anwendungs- oder objektorientierter Fehler"
'oder
ThisWorkbook.Sheets("DNEL Results").Range(Sheets("DNEL Results").Cells(3, 2), Sheets("DNEL  _
Results").Cells(60*i, 2)).Copy
ActiveWorkbook.Sheets("Tabelle1").Range(Sheets("Tabelle1").Cells(60 * k, 1)).PasteSpecial  _
xlPasteAll
Fehleranzeige 2:"Index ausserhalb des gültigen Bereichs": Beim Debuggen zeigt es den  _
ThisWorkbook...-Teil an.
End Sub
Könnt Ihr mir helfen? Dies scheint ein verzwicktes Problem zu sein.
Ich danke für Eure Hilfe,
Liebe Grüsse,
Daniel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: range(cells(),cells()) copy paste
15.08.2014 09:13:14
Daniel
Hi
Was für Sheets gilt, gilt auch für Workbooks:
Wenn die Angabe des Workbook fehlt, setzt VBA immer das ActivewWorkbook ein.
Und die Range selbst muss immer im selben Workbook liegen wie die Zellen die sie definieren, sonst gibt es den Fehler.
Kleiner Tipp in diesem Zusammenhang:
Wenn der Code in einem allgemeinen Modul steht, dann kann man die Angabe von Workbook und Sheet VOR der Range weglassen, diese ist nur vor den Celle innerhalb erforderlich..
Laufzeitfehler 9 weist in diesem Zusammenhang auf einen falsch geschriebenen Workbook- oder Sheetnamen hin.
Wenn du wie beim einfügen nur eine Zelle angibt, dann lässt man das Range weg und gibt direkt das Cells an:
ActiveWorkbook.Sheets("Tabelle1").Cells(60 * k, 1).PasteSpecial xlPasteAll
Gruß Daniel

Anzeige
AW: range(cells(),cells()) copy paste
15.08.2014 09:32:03
Daniel
Hallo Daniel,
Danke für die rasche Antwort.
Leider funktioniert der Code immer noch nicht:
Ich kopiere aus einem Workbook mit dem Namen "New Values" (wird auch als ThisWorkbook erkannt, das entsprechende Sheet im Workbook heisst "DNEL Results") eine Tabelle, die ich dann in ein anderes vom Code kreirten Workbook (als ActiveWorkbook erkannt, habe ich getestet) hineinkopiere.
Wenn ich das so hinschreibe:
ThisWorkbook.Sheets("DNEL Results").Range(Sheets("DNEL Results").Cells(3, 2), Sheets("DNEL Results").Cells(10, 5)).Copy
gibt es mir an dieser Stelle eine Fehleranzeige: "Index ausserhalb des gültigen Bereichs" (Laufzeitfehler 9).
Ich sehe weder einen Syntax- noch einen Schreibfehler. Weisst Du um was es sich handeln könnte?
ich danke nochmals für Deine Hilfe.
Daniel

Anzeige
AW: range(cells(),cells()) copy paste
15.08.2014 10:27:18
Daniel
Hi
hast du meinen Beitrag nicht gelesen?
da habe ich dir doch im ersten Satz erklärt, wo der Fehler liegt
oder schreibe ich so unverständlich?
aber ich wiederhole es noch mal für dich:
Wenn du bei einem Zellbezug kein Workbook angibst, setzt Excel das aktive Workbook ein:
Aus:
ThisWorkbook.Sheets("DNEL Results").Range(Sheets("DNEL Results").Cells(3, 2), Sheets("DNEL Results").Cells(10, 5)).Copy
macht VBA dann:
ThisWorkbook.Sheets("DNEL Results").Range(ActiveWorkbook.Sheets("DNEL Results").Cells(3, 2), AcitveWorkbook.Sheets("DNEL Results").Cells(10, 5)).Copy
deswegen schrieb ich dir, dass du das Workbook auch vor den beiden Cells innerhalb der Range angeben musst:
ThisWorkbook.Sheets("DNEL Results").Range(ThisWorkbook.Sheets("DNEL Results").Cells(3, 2), ThisWorkbook.Sheets("DNEL Results").Cells(10, 5)).Copy
du darfst aber das Workbook und Sheet VOR der Range weglassen, wenn der code in einem allgemeinen Modul steht:
Range(ThisWorkbook.Sheets("DNEL Results").Cells(3, 2), ThisWorkbook.Sheets("DNEL Results").Cells(10, 5)).Copy
Gruß Daniel

Anzeige
nicht aktualisiert
15.08.2014 10:47:39
Erich
Hi Daniel (diesmal der Antworter),
sorry, deine neuerliche Antwort hatte ich nicht rechtzeitig gesehen, F5 hat gefehlt...
Na ja, vielleicht hält doppelt ja besser. :-)
Grüße aus Kamp-Lintfort von Erich und: Schönes Wochenende allerseits!

AW: nicht aktualisiert
15.08.2014 11:35:28
Daniel
Hallo Daniel,
Danke auch für Deine Rückmeldung. Das hat nun funktioniert. Ist manchmal tricky, alle diese Eingaben korrekt durchzuführen.
Ich wünsche auch Dir ein schönes Wochenden.
Liebe Grüsse,
Daniel

AW: range(cells(),cells()) copy paste
15.08.2014 10:50:59
Daniel
Hallo Daniel,
Ich habe Deinen Beitrag gelsen, nur nicht verstanden, dass in den Klammern noch ThisWorkbook stehen muss. Jetzt läuft das Programm und dafür danke ich Dir herzlich :-)
Ich wünsche Dir ein schönes Wochendene,
Daniel

Anzeige
richtig referenzieren
15.08.2014 10:42:40
Erich
Hi Daniel (der Fragesteller...),
der andere Daniel hatte schon geschrieben:
"Wenn die Angabe des Workbook fehlt, setzt VBA immer das ActiveWorkbook ein."
(immer: wenn der Code in einem allg. Modul steht - das nur am Rande)
Wenn du schreibst
ThisWorkbook.Sheets("DNEL").Range(Sheets("DNEL").Cells(3, 2), _
   Sheets("DNEL").Cells(10, 5)).Copy
dann ist das ausführlich
ThisWorkbook.Sheets("DNEL").Range(ActiveWorkbook.Sheets("DNEL").Cells(3, 2), _
   ActiveWorkbook.Sheets("DNEL").Cells(10, 5)).Copy
Du willst aber
ThisWorkbook.Sheets("DNEL").Range(ThisWorkbook.Sheets("DNEL").Cells(3, 2), _
   ThisWorkbook.Sheets("DNEL").Cells(10, 5)).Copy
oder kürzer
With ThisWorkbook.Sheets("DNEL")
   .Range(.Cells(3, 2), .Cells(10, 5)).Copy
End With
Der Fehler 9 ergibt sich daraus, dass es im (neuen) ActiveWorkbook natürlich kein Blatt DNEL... gibt.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige