Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ein Fall für Onur (Select)

Forumthread: Ein Fall für Onur (Select)

Ein Fall für Onur (Select)
07.06.2024 22:21:05
Wennerfaellt
https://www.herber.de/bbs/user/169911.xlsm

Sub Nord()



Sheets("Beck").Select
Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets("AB").Range("A1")



End Sub

Sub Süd()

Sheets("Beck").Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets("AB").Range("A1")

End Sub


Nachdem Onur immer wieder Predigt, dass .Select in den meißten Fällen nicht nötig ist, und ich das beherzigt habe, und damit viel Rechenzeit und Bildgeflimmer spare, steh ich hier nun vor einem Rätsel.

Die oben angegebenen Codes unterscheiden sich nur dadurch, dass ich in Süd das "Select" weggelassen, und damit aus zwei Zeilen eine gemacht habe.

Im Ergebnis sollte im Tabellenblatt AB eigentlich dasselbe stehen(?)

Wenn Du diese Frage für Dich klar hast, öffne die Datei umd probier es aus.

Mein Ergebnis weiter unten, bitte erst später lesen;-)
.
.
.
.
.
.
.
.
.
.
Im Sub Nord bekomme ich alle Adressen übertragen, im Sub Süd nur die Erste.

Warum???
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein Fall für Onur (Select)
07.06.2024 22:33:58
BoskoBiati2
Hi,

falsche Syntax:

Sheets("Beck").Range("A1:A" & Sheets("Beck").Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets("AB").Range("A1")


oder:

Sub Süd()

With Sheets("Beck")
.Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets("AB").Range("A1")
End With
End Sub


Gruß

Edgar
Anzeige
AW: Ein Fall für Onur (Select)
07.06.2024 22:41:18
Oppawinni
Also bei mir funktioniert beides.
aber du hast hier doch schon öfter gepostet, da könntest du vielleicht auch schon mal gelernt haben, wie man Code-Tags verwendet.
AW: Ein Fall für Onur (Select)
07.06.2024 22:51:26
Oppawinni
es funktioniert so, wie du es programmiert hast, nur willst du das ja nicht so.
Da hat der Kollege aber schon den richtigen Hinweis gegeben.
Anzeige
AW: Ein Fall für Onur (Select)
07.06.2024 22:42:43
Onur
Ganz einfach - weil du einen Fehler gemacht hast.
Cells(Rows.Count, 1).End(xlUp).Row)

bezieht sich immer auf das Blattmodul des Codes und wenn es es in einem allgemeinen Modul steht, das aktuell aktive Blatt. Also musst du den Blattnamen mit angeben, wenn es in einem allg. Modul steht, da so ein Modul nun mal kein Blatt hat und deswegen das aktive Blatt als Referenz nimmt.
Also:
Sheets("Beck").Cells(Sheets("Beck").Rows.Count, 1).End(xlUp).Row)
Anzeige
AW: Alternativ ...
08.06.2024 18:27:11
Kuwer
... ginge es z.B. mit CurrentRegion (aktueller zusammenhängender Bereich). Da reicht die eine Referenzierung.

Sub Sued()

Sheets("Beck").Range("A1").CurrentRegion.Columns(1).Copy Sheets("AB").Range("A1")
End Sub
Gruß, Uwe
Spezielle Frage zum Bezug aufs Blatt
08.06.2024 05:13:57
Beverly
@All,

wenn man sich auf ein nicht aktives Tabellenblatt beziehen will ist in der Codezeile

Sheets("Beck").Cells(Sheets("Beck").Rows.Count, 1).End(xlUp).Row)


an DIESER Stelle Sheets("Beck").Cells(Sheets("Beck").Rows.Count, 1).End(xlUp).Row) logischerweise ein Bezug aufs betreffende Tabellenblatt erforderlich. Die Frage wäre: ist der Bezug an DIESER Stelle Sheets("Beck").Cells(Sheets("Beck").Rows.Count, 1).End(xlUp).Row) tatsächlich erforderlich? Die Anzahl an Zeilen ist in allen Blättern identisch. M.E. ist die folgende Schreibweise deshalb ebenfalls völlig korrekt:

Sheets("Beck").Cells(Rows.Count, 1).End(xlUp).Row)


Oder übersehe ich da etwas?


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 07:05:32
Luschi
Hallo Kariin,

wenn das aktive Blatt vom Typ 'Diagramm', oder 'MS Excel 5.0 Dialog' ist, knallt es bei
Sheets("Beck").Cells(Rows.Count, 1).End(xlUp).Row), denn da gibt es keine Zeilennummern.
Oder man macht es so:
Sub Sued()

With Sheets("Beck")
.Range("A1:A" & .Rows.Count).End(xlUp).Row).Copy Sheets("AB").Range("A1")
End With
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 11:00:19
Oppawinni
Das Punkt ist, dass das wahrscheinlich in 99% der Fälle funktioniert, aber halt streng nicht korrekt ist und zu Fehlern führen kann.
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 13:26:29
BoskoBiati2
Hallo,

vielleicht sollte man das Kernproblem zusammenfassen:

Es gibt eine Datei mit zwei Blättern: "Beck" mit einer beliebigen Anzahl von gefüllten Zellen und "AB" mit, im Ausgangszustand, nur leeren Zellen.
Der Code ist hinter dem Blatt "AB".

Mit Sheets("Beck").select mache ich das für die nachfolgenden Anweisungen, insbesondere Adressierungen, zum aktiven Blatt.
Cells(Rows.Count, 1).End(xlUp).Row bezieht sich hier also auf "Beck" mit 6 Zeilen, die auch alle in das Blatt "AB" kopiert werden.

Im Gegensatz dazu ist bei dem anderen Makro das Blatt "AB" aktiv.
Sheets("Beck").Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets("AB").Range("A1")
Also bezieht sich Cells(Rows.Count, 1).End(xlUp).Row hier auf das Blatt "AB", welches hier leer ist, d.h. der Wert wird zu 1.
Genau wie bei der With-Syntax gilt hier, dass man die einzelnen Teile der Adressierungen auch auf das gewünschte Blatt referenzieren muß:
Sheets("Beck").Range("A1:A" & Sheets("Beck").Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets("AB").Range("A1")

Das gilt ja generell bei Makros, die in Modulen oder Diese Arbeitsmappe stehen.
Also wieder einmal ein Beweis dafür, dass eine saubere Referenzierung das A u. O ist, um (vor allem nicht offensichtliche) Fehler zu vermeiden.

Aber der TE äußert sich nicht mehr dazu.

Gruß

Edgar




Anzeige
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 09:06:17
Beverly
Hi Luschi,

ok, das klingt logisch. Die vereinfachte Schreibweise sollte man nur dann anwenden wenn man sicher ist, dass es diese beiden Sheet-Typen in der Mappe definitiv nicht gibt. Danke für den Hinweis, manchmal kommt man auf das Einfachste nicht.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 11:45:17
daniel
Und es knallt ebenfalls, wenn man mit zwei Dateien arbeitet, von denen eine eine alte xls- und die andere eine neue xlsx/m/b-Datei ist.

Gruß Daniel
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 12:53:55
Beverly
Kann ich nicht nachvollziehen - gleichgültig in welcher der beiden Mappen sich das Makro befindet.
Dass man in Abhängikeit ein unterschiedliches Ergebnis erhält wenn alle Zeilen bis zu letzten gefüllt sind ist eine andere Angelegenheit.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 13:00:33
Oppawinni
man kann halt in einer alten Excel-Mappe z.B. nicht auf Zeile 1048576 zugreifen, weil es die da noch nicht gab.
Wenn aktives Sheet aber eine neue Mappe ist, würde Rows.count dann aber 1048576 liefern und dann hast du den Salat.
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 14:16:58
Beverly
Das weiß ich auch und ich hatte auch geschrieben, dass der Code in Abhängigkeit von der Mappe ein unterschiedliches ("falsches") Ergebnis liefert. Ein Problem mit dem Code bei seiner Ausführung gibt es jedoch nicht wie z.B. wenn man sich auf einem Diagrammblatt befindet, denn dort wird ein Laufzeitfehler ausgelöst.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 14:38:38
Oppawinni
Laufzeitfehler muss man nicht als Problem sehen ? Oder versteh ich das wieder nicht?
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 16:00:53
Beverly
Drehe mir doch nicht das Wort im Mund um! Es tritt bei Blättern mit Zeilen-Eigenschaft kein Laufzeitfehler auf wenn man sich nicht explizit auf eine andere ARBEITSMAPPE bezieht - und in meinem Code gibt es nur eine Referenzierung zur aktiven Arbeitsmappe.

Für mich ist das Thema durch die anderen Beiträge ausreichend beantwortet.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 13:07:27
Onur
Workbooks("test.xls").Sheets("Beck").Cells(Rows.Count, 1).End(xlUp).Row)

würde Fehler verursachen, wenn das Makro in einer XLSM stünde.
AW: Spezielle Frage zum Bezug aufs Blatt
08.06.2024 14:13:55
daniel
"würde Fehler verursachen, wenn das Makro in einer XLSM stünde."

Nein. Es ist normalerweise egal, in welcher Datei das Makro steht. Die Frage ist, welche Datei zum Zeitpunkt der Ausführung aktiv ist, da die Default-Referenz für Rangeobjekte das ActiveSheet ist.

Die Ausnahme wäre, wenn das Makro in einem Tabellenblattmodul steht. Dann ist die Default-Referenz das jeweilige Tabellenblatt.


Gruß Daniel



Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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