Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht

Forumthread: Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht

Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht
16.07.2024 18:06:58
Ricardo
Ich versteh's nicht... ChatCPT hilft auch nicht.

Die Anweisung mit A1-Schreibweise funktioniert:
myWS.Range("SS1:TD6").Copy Destination:=myWS.Range("TE1") '!!!!!!!!!!!!!!Das klappt

Die Anweisung mit Cells läuft auf Laufzeitfehler "1004 Methode Range für das Objekt _Worksheet ist fehlgeschlagen"

myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(Cells(1, 525))

Später will ich natürlich SS1:TD6 auch noch durch Cells ersetzen.

Irgendetwas klitzekleines mache ich wohl falsch.
Vielen Dank für euere Hilfe
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht
16.07.2024 18:19:23
peter
Hallo

Ungetestet

myWS.Range(Cells(1, 525),Cells(1, 525))

oder

myWS.Range(Cells(1, 525).Address)

Peter
AW: Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht
16.07.2024 18:59:51
BoskoBiati2
Hi,

Variante von RPP63 ist die einfachere, aber es ginge auch das, muß man halt Spalten und Zeilen zählen:

myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(Cells(1, 525), Cells(6, 536))


Gruß

Edgar
Anzeige
AW: Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht
16.07.2024 19:56:02
daniel
Hi
wenn du Range() mit nur einem einzigen Wert "fütterst", dann muss das ein Text sein, der einer gültigen Zelladresse entspricht.

myWS.Range(Cells(1, 525)) kann funktionieren, wenn in der Zelle Cells(1, 525) auf dem aktiven Tabellenblatt eine gültige Zelladresse als Text steht , also beispielsweise "TE1".
oder du sagst, dass du hier explizit die Adresse dieser Zelle angeben möchtest:
myWS.Range(Cells(1, 525).Address)
das wäre aber doppeltgemoppelt, denn wenn man nur eine einzige Zelle referenzieren will und das über Zeilen- und Spaltennummer machen möchte, dann nimmt man nur Cells, ohne Range:
...destination:=myWS.Cells(1, 525)

"Später will ich natürlich SS1:TD6 auch noch durch Cells ersetzen."
das geht, dann kombiniert man auch Range und Cells, aber eben mit zwei Cells und nicht nur mit einer.
beachte, dass du dann aber das Worksheet vor den Cells angeben musst und nicht vor der Range (vor der Range kann man es angeben, muss aber nicht, außer den Code befindet sich im Modul eines Tabellenblatts, dann muss man auch vor der Range das Worksheet angeben)
also Range(myWS.Cells(1, "SS"), myWs.Cells(6, "TD"))
und wenn man in einem Tabellenblattmodul ist: myWS.Range(myWS.Cells(1, "SS"), myWs.Cells(6, "TD"))
da das aufwendig ist, definiere ich solche Zellbereiche dann lieber über myWS.Cells(1, "SS").Resize(6, 12)

Gruß Daniel
Anzeige
Rückmeldung
17.07.2024 17:05:10
Ricardo
Vielen Dank für euere schnellen und zahlreichen Rückmeldungen.

Ich fasse mal die Lösungen zusammen welche funktionieren und welche nicht funktionieren (d.h. Laufzeitfehler)

Diese Vorschläge funktionieren nicht:
myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(myWS.Cells(1, 525))
myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(Cells(1, 525), Cells(1, 525))

Diese Vorschläge funktionieren alle:
myWS.Range("SS1:TD6").Copy Destination:=Range(myWS.Cells(1, 525), myWS.Cells(6, 536))
myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(myWS.Cells(1, 525), myWS.Cells(1, 525))
myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(myWS.Cells(1, 525), myWS.Cells(6, 536))
myWS.Range("SS1:TD6").Copy Destination:=myWS.Cells(1, 525)
myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(Cells(1, 525).Address) )

Der letzte Vorschlag ist insofern (zumindest für mich....) interessant, als dass man dem Excel via Address noch beibringen muss dass Cells(1,525) tatsächlich eine Bezug ist.
Man könnte argumentieren, dass dies logisch ist, denn nur mit Cells könnte er vielleicht den Inhalt meinen.
Nur: für die obige Lösung myWS.Cells(1,525), die ja auch funktioniert, braucht er wiederum nicht die Erklärung, dass Cells doch bitte eine Adresse sein soll.

Also nochmals Danke!
Gruß Ricardo
Anzeige
AW: Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht
16.07.2024 19:46:06
daniel
ja, aber wozu?
linke obere Zelle der Destination reicht.
die komplette Destination muss man nur angeben, wenn sie um ein vielfaches größer ist als der kopierte Bereich und man diesen dadurch vervielfältigen möchte.

außerdem:
myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(Cells(1, 525), Cells(6, 536))
hat einen Anfängerfehler, der ständig gemacht wird.
wenn, dann so:
myWS.Range("SS1:TD6").Copy Destination:=myWS.Range(myWS.Cells(1, 525), myWS.Cells(6, 536))

Gruß Daniel
Anzeige
AW: Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht
16.07.2024 19:50:48
RPP63
Wobei hier natürlich das Objekt vor Range überflüssig ist.
Es reicht
Destination:=Range(myWS.Cells(1, 525), myWS.Cells(6, 536))
AW: Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht
16.07.2024 19:57:48
daniel
kommt darauf an.
in einem allgemeinen Modul kann man das Worksheet vor der Range dann weglassen,
in einem Tabellenblattmodul muss man es auch dort angeben.
Anzeige
AW: Copy mit Dest:=myWS.Range("TE1") klappt. Mit Cells nicht
16.07.2024 18:26:27
RPP63
Moin!
Lass mal das Range() weg:
myWS.Cells(1, 525)

Gruß Ralf

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige