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

Forumthread: Problem mit Selection.End(xlDown)

Problem mit Selection.End(xlDown)
12.04.2022 08:28:27
Albert
Hallo liebes Forum,
ich habe ein Problem bei

Range(Selection, Selection.End(xlDown)).Select
und zwar kann es vorkommen, das nur eine Zeile Daten hat und dann wird bis ans Tabellenende selektiert. Es soll aber in diesem Fall nur die eine Zeile selektiert sein.
Hinweis: Wenn Mehrere Zeilen vorhanden sind funktioniert das Makro richtig (alle Zeilen die Daten in Spalte A haben werden selektiert).
Der Makroteil ist folgender:

Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Bitte um Hilfe wie das Makro aussehen soll, damit es auch bei nur einer befüllten Zeile funktioniert.
Danke!
LG
Bert
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Selection.End(xlDown)
12.04.2022 08:52:40
Alex
Morgen Bert
Versuche mal über das Worksheet:
sh.Cells(Rows.Count, 1).End(xlUp).Row
1=Spalte A usw.
Ich habe das mit einer Funktion gelöst, die folgende Parameter erwartet: ein Workscheet und den SpaltenIndex und als Rückgabewert die letzte benutzte Zelle.
Gruss Alex
AW: Problem mit Selection.End(xlDown)
12.04.2022 09:05:40
Rudi
Hallo,
Select ist i.d.R. überflüssig.
Letztlich reicht
Range("A1").Currentregion.Select
Gruß
Rudi
Anzeige
AW: Problem mit Selection.End(xlDown)
12.04.2022 09:44:57
Albert
Hallo Rudi,
danke für den Vorschlag welcher auch super funktioniert bis auf folgendes Problem:
Der Spalten-Selektionsbereich muss ("A1:G1") umfassen weil es vorkommen kann, dass einzelne Zellen in Zeile A auch leer sein können.
Deshalb habe ich für die Spalten Range("A1:G1").Select verwendet und nicht "Selection.End(xlToRight)".
Gibt es dafür auch noch eine Lösung in deinem Code?
Bitte nochmals um Hilfe.
Danke!
LG
Bert
Anzeige
AW: Problem mit Selection.End(xlDown)
12.04.2022 10:13:29
Rudi
Zeile A kennt mein Excel nicht.
Immer A:G
Range("A1").Currentregion.Resize(,7).Select
Gruß
Rudi
AW: Problem mit Selection.End(xlDown)
12.04.2022 10:27:15
Albert
Hallo Rudi,
was, dein Excel kennt Zeile A nicht hihihi.
Danke, dass ist jetzt Perfekt.
Danke auch an Alex.
Schönen Tag und LG
Bert
wenn perfekt dann geschlossen. owT
12.04.2022 10:29:05
Rudi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Probleme mit Selection.End(xlDown) in Excel VBA lösen


Schritt-für-Schritt-Anleitung

  1. Problem verstehen: Das Problem tritt auf, wenn du versuchst, mit Range(Selection, Selection.End(xlDown)).Select eine Auswahl zu treffen. Wenn nur eine Zeile Daten vorhanden ist, wird bis zum Ende der Tabelle selektiert.

  2. Alternative Methode: Verwende statt Selection.End(xlDown) die Methode Cells(Rows.Count, 1).End(xlUp).Row, um die letzte benutzte Zelle in Spalte A zu finden.

  3. Implementierung: Hier ist ein Beispiel, wie du dein Makro anpassen kannst:

    Sub AuswahlMitLetzteZeile()
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
       Range("A1:G" & letzteZeile).Select
       Selection.Copy
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Auswahl geht bis zum Ende der Tabelle, wenn nur eine Zeile vorhanden ist.

    • Lösung: Verwende Cells(Rows.Count, 1).End(xlUp).Row, um die letzte benutzte Zeile zu ermitteln.
  • Fehler: Verwendung von Select ist überflüssig.

    • Lösung: Du kannst direkt mit Range("A1:G" & letzteZeile).Copy arbeiten, um das Clipboard zu befüllen, ohne die Auswahl zu verändern.

Alternative Methoden

  1. CurrentRegion: Eine einfache Methode ist die Verwendung von CurrentRegion, um die gesamte Region um die Zelle A1 zu wählen.

    Range("A1").CurrentRegion.Resize(, 7).Copy
  2. Verwendung von Arrays: Du könntest die Daten auch in ein Array einlesen und dann die benötigten Informationen verarbeiten, ohne die Zellen direkt auszuwählen.


Praktische Beispiele

  • Beispiel 1: Um alle Daten in Spalte A bis zur letzten benutzten Zeile zu kopieren:

    Sub KopiereDaten()
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
       Range("A1:A" & letzteZeile).Copy
    End Sub
  • Beispiel 2: Wenn du eine bestimmte Spalte und die nächste befüllte Zeile brauchst:

    Sub KopiereBisZurNaechstenBefuelltenZeile()
       Range(Selection, Selection.End(xlToRight)).Copy
    End Sub

Tipps für Profis

  • Vermeide Select: In den meisten Fällen ist es effizienter, direkt mit dem Range-Objekt zu arbeiten, anstatt die Auswahl zu ändern.

  • Funktionen nutzen: Schreibe wiederverwendbare Funktionen, die Parameter wie das Arbeitsblatt und die Spaltenindexnummer akzeptieren, um die letzte benutzte Zelle zu finden.

  • Error Handling: Implementiere Fehlerbehandlungsmechanismen, um mit unerwarteten Situationen umzugehen, wie z.B. leeren Spalten.


FAQ: Häufige Fragen

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

2. Warum wird die Auswahl manchmal bis zum Ende der Tabelle ausgeweitet? Das passiert, wenn die Zelle, von der aus du startest, leer ist. Daher solltest du immer die letzte benutzte Zeile ermitteln, bevor du die Auswahl triffst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige