Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1460to1464
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

Fehler bei Range(Cell(......

Fehler bei Range(Cell(......
08.12.2015 10:40:15
muehli
Hallo zusammen,
ich habe bei folgendem Code einen Fehler, bei dem ich nicht verstehe, warum er auftritt:
letztezeile = Sheets("Bauteile").Cells(Rows.Count, 3).End(xlUp).Row
Sheets("Bauteile").Range("A3:N3").Copy
Sheets("PDF").Range("N41").PasteSpecial Paste:=xlPasteColumnWidths
Sheets("Bauteile").Range(Cells(4, 1), Cells(letztezeile, 14)).Copy '

hat jemand eine Ahnung warum das so ist?
Freundliche Grüße und danke
Muehli

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

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei Range(Cell(......
08.12.2015 10:46:53
Sepp
Hallo Muehli,
"hat jemand eine Ahnung warum das so ist?"
Ja, weil die Referenzierung nicht stimmt Cells() bezieht sich auf das aktive Blatt!

With Sheets("Bauteile")
.Range(.Cells(4, 1), .Cells(letztezeile, 14)).Copy '

Gruß Sepp

AW: Fehler bei Range(Cell(......
08.12.2015 11:05:21
Daniel
Hi
wenn du eine Range über zwei Cells definierst, dann muss das Tabellenblatt vor den beiden Cells innerhalb der Range stehen, denn wie schon von Sepp erwähnt, beziehen sich Zellbezüge (Cells, Range, Columns, Rows) ohne Tabellenblattangabe davor immer auf das aktive Tabellenblatt*.
das gilt auch für Zellbezüge innerhalb von Funktionen, steht in der übergreifenden Funktion schon das Tabellenblatt, so wird dieses NICHT auf die innenliegenden Zellbezüge übernommen.
du darfst sogar das Tabellenblatt vor der Range weglassen*
der Code müsste so aussehen:
Range(Sheets("Bauteile").Cells(4, 1), Sheets("Bauteile").Cells(letztezeile, 14)).Copy 

weil das umständlich ist, kann man mit der WITH-Klammer arbeiten (beachte die Punkte)
With Sheets("Bauteile")
Range(.Cells(4, 1), .Cells(letztezeile, 14)).Copy
End with
oder mit der Resize-Funktion, um das Range(Cells(), Cells()) zu vermeiden:
Sheets("Bauteile").Cells(4, 1).Resize(letztezeile - 3, 14).Copy

* Ausnahme:
wenn der Code in einem Tabellenblattmodul steht, dann beziehen sich Zellbezüge ohne Tabellenblattangabe davor auf das Tabellenblatt des Moduls.
In diesem Fall muss dann auch vor der Range das Tabellenblatt angegeben werden (wenn man sich nicht auf das Modultabellenblatt beziehen will)
Gruß Daniel

Anzeige
AW: Fehler bei Range(Cell(......
10.12.2015 08:20:58
muehli
Danke euch!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige