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

Cells(Rows.Count, 1).End(xlUp).Row

Forumthread: Cells(Rows.Count, 1).End(xlUp).Row

Cells(Rows.Count, 1).End(xlUp).Row
08.10.2014 14:20:14
Hartmut_M
Hallo, bitte gebt mir einen Tipp. Seit dem Umstieg von Excel XP auf 2010 funktioniert der Code nicht mehr.
Aus einer Datei kopiere ich den Bereich B1:G1
Den kopierten Bereich will ich in einer anderen Datei einfügen.
Dazu suche ich die erste freie Zeile in der zu öffnenden Datei.
Workbooks.Open(Filename:="I:\Sammeldatei.xls").Activate
ActiveWorkbook.Worksheets(1).Select
iletzteZelle = Cells(Rows.Count, 1).End(xlUp).Row
iletzteZelle gibt aber die Zeilennummer der Ursprungsdatei zurück. Ich brauche aber die Zeile aus der aktiven Datei. Was mache ich falsch?
Gruß Hartmut

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Cells(Rows.Count, 1).End(xlUp).Row
08.10.2014 14:33:45
ChrisL
Hi Hartmut
Activate und Select wenn möglich vermeiden...
Sub Makro1()
Dim WB As Workbook
Dim WS As Worksheet
Dim iletzteZelle As Long
Set WB = Workbooks.Open(Filename:="I:\Sammeldatei.xls")
Set WS = WB.Worksheets(1)
iletzteZelle = WS.Cells(Rows.Count, 1).End(xlUp).Row
MsgBox iletzteZelle
End Sub

cu
Chris

Anzeige
AW: Cells(Rows.Count, 1).End(xlUp).Row
08.10.2014 14:56:24
Hartmut_M
Hallo Chris, vielen Dank für den Tipp.
Beim ausführen erhalte ich nach der Zeile:
iletzteZelle = WS.Cells(Rows.Count, 1).End(xlUp).Row
Fehler 1004: Anwendungs- oder objektdefineirter Fehler
Bei Rows.Count wird mir 1048576 angezeigt. Bei xlUp -4162
Sagt dir das etwas? Ich blick zurzeit nicht mehr durch. :-(

Anzeige
AW: Cells(Rows.Count, 1).End(xlUp).Row
08.10.2014 15:09:24
Luschi
Hallo Hartmut,
mache es so:

With WS
iletzteZelle = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
Gruß von Luschi
aus klein-Paris
PS: achte dabei auf die Punkte vor Cells & Rows

AW: Cells(Rows.Count, 1).End(xlUp).Row
08.10.2014 15:55:17
Hartmut_M
Hallo Luschi,
so geht's. Vielen Dank.
Gruß Hartmut
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Cells(Rows.Count, 1).End(xlUp).Row in Excel VBA


Schritt-für-Schritt-Anleitung

Um die letzte verwendete Zeile in einem Excel-Arbeitsblatt zu finden, kannst Du den folgenden VBA-Code verwenden:

Sub Makro1()
    Dim WB As Workbook
    Dim WS As Worksheet
    Dim iletzteZelle As Long

    Set WB = Workbooks.Open(Filename:="I:\Sammeldatei.xls")
    Set WS = WB.Worksheets(1)
    iletzteZelle = WS.Cells(WS.Rows.Count, 1).End(xlUp).Row
    MsgBox iletzteZelle
End Sub

In diesem Code wird die Cells(Rows.Count, 1).End(xlUp).Row-Methode verwendet, um die letzte Zeile in der ersten Spalte zu bestimmen. Achte darauf, dass Du WS.Rows.Count verwendest, um sicherzustellen, dass Du die Zeilenanzahl des aktiven Arbeitsblatts verwendest.


Häufige Fehler und Lösungen

Ein häufiger Fehler, der bei der Verwendung von Cells(Rows.Count, 1).End(xlUp).Row auftreten kann, ist der Anwendungs- oder objektdefinierte Fehler 1004. Dieser Fehler tritt häufig auf, wenn Du versuchst, auf ein Arbeitsblatt zuzugreifen, das nicht aktiv ist oder nicht korrekt referenziert wird.

Lösung: Verwende With WS-Blöcke, um sicherzustellen, dass alle Methoden auf das richtige Arbeitsblatt angewendet werden:

With WS
    iletzteZelle = .Cells(.Rows.Count, 1).End(xlUp).Row
End With

Alternative Methoden

Neben der Verwendung der End(xlUp)-Methode gibt es auch andere Möglichkeiten, die letzte Zeile zu finden. Du könntest beispielsweise die UsedRange-Eigenschaft verwenden:

Dim letzteZeile As Long
letzteZeile = WS.UsedRange.Rows.Count

Das kann eine schnellere Methode sein, insbesondere wenn Du mit großen Datenmengen arbeitest.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die letzte Zeile in einer anderen Spalte (z.B. Spalte B) finden kannst:

letzteZelle = WS.Cells(WS.Rows.Count, 2).End(xlUp).Row

Du kannst auch die letzte Zeile mit einer Anpassung der End-Methode wie folgt finden:

letzteZelle = WS.Cells(WS.Rows.Count, 1).End(xlUp).Row + 1

Hier wird die nächste freie Zeile in der Spalte A ermittelt.


Tipps für Profis

  • Vermeide die Verwendung von Activate und Select, um die Effizienz Deines Codes zu erhöhen.
  • Nutze die With-Anweisung, um den Code lesbarer und schneller zu machen.
  • Stelle sicher, dass Du die richtige Arbeitsmappe und das richtige Arbeitsblatt referenzierst, um unerwartete Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie finde ich die letzte Zeile in einer bestimmten Spalte?
Du kannst die Methode Cells(Rows.Count, Spalte).End(xlUp).Row verwenden, wobei Spalte die Nummer der gewünschten Spalte ist.

2. Warum funktioniert mein Code nicht auf Excel 2010?
Stelle sicher, dass Du die richtige Referenz zu Deinem Arbeitsblatt und den Zellen verwendest. Der Code kann sich je nach Version leicht unterscheiden, also achte darauf, die entsprechenden Anpassungen vorzunehmen.

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