Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
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

Range in benannten Bereich auswählen

Range in benannten Bereich auswählen
16.02.2017 19:13:43
Kailash
Hallo!
in dem benannten Bereich [list_columns] möchte ich Zelle 1 bis zur letzten verwendeten Zelle markieren.
Hier einer meiner vergeblichen Versuche:
Sub RangeinBereichMarkieren()
With ChangeColumns
[list_columns].Range(Cells(1, 1), [list_columns].Cells(Rows.Count, 1).End(xlUp)).Select
End With
End Sub
Wie macht man das richtig?
Grüsse
Kailash

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bspw so, ...
16.02.2017 19:37:25
Luc:-?
…Kailash:
Range("list_columns").Parent.Activate: Intersect(Range("list_columns"), ActiveSheet.UsedRange).Select
Gruß, Luc :-?
Besser informiert mit …
AW: Bspw so, ...
20.02.2017 10:06:17
Kailash
Hallo Luc!
Hab deine Nachricht erst jetzt gesehen.
Der Cod von dir markiert den GANZEN benannten Bereich. Also das gleiche wie
[list_columns].select
Ich wollte aber nur den ausgefüllten bereich (1 zelle, bis letzte benutzte zelle) markieren.
Noch ne Idee?
Viele Grüsse
Kailash
Anzeige
Tja, wenn das so ist, hast du wohl auch ...
20.02.2017 16:02:17
Luc:-?
…den ganzen benannten Bereich benutzt, Kailash,
d.h., die leeren Zellen enthalten entweder Formate, weil ggf nur ihr Inhalt gelöscht wurde, oder in anderen Spalten gehen die Werte über die der benannten Spalte hinaus. Dann fktioniert das natürlich nicht. Nur für diesen Bereich (alle nichtbenutzten Zellen müssen aber völlig leer sein → keine Formate, keine Fmln oder irgendwas Anderes, Unsichtbares!) geht's dann so:
Range("list_columns").Parent.Activate
Range(Range("list_columns").End(xlUp), Range("list_columns").End(xlDown)).Select

Anderenfalls muss die letzte Zelle gesucht wdn, die noch einen Wert zeigt!
Luc :-?
Anzeige
AW: Tja, wenn das so ist, hast du wohl auch ...
20.02.2017 21:55:56
Kailash
Hallo Luc!
Nun habe ich da längere Zeit mich mit beschäftigt (in einem neuen, leeren sheet).
Dein erster code
Sub rangetest()
Range("list_columns").Parent.Activate
Intersect(Range("list_columns"), ActiveSheet.UsedRange).Select
End Sub
Markiert die Range("list_columns") bis dort wo auch in der Umgebung was in einer Zelle steht.
(bis zur letzten Zeile im usedrange)
Dein zweiter Code
Sub luc()
Range("list_columns").Parent.Activate
Range(Range("list_columns").End(xlUp), Range("list_columns").End(xlDown)).Select
End Sub
markiert alles hoch bis Zeile1 oder so hoch bis etwas in der Spalte steht (ausserhalb von Range("list_columns")
Dieser Code
Sub mitcells()
Range("list_columns").Parent.Activate
Range(Range("list_columns").Cells(1, 1), Range("list_columns").End(xlDown)).Select
End Sub
Markiert ganz gut, aber wenn eine leere Zelle da ist, wird nicht weiter markiert.
Hast du noch nen Vorschlag?
Grüsse
Kailash
Anzeige
Dann wirst du wohl alle Zellen im Bereich ...
21.02.2017 12:56:54
Luc:-?
…abfragen müssen (am besten von hinten), Kailash,
um das Ende zu finden. Das wirst du wohl selber können.
Luc :-?
AW: Dann wirst du wohl alle Zellen im Bereich ...
21.02.2017 13:40:00
Kailash
Hallo Luc!
Ich bin da ein richtiger Anfänger.
Du meintest so oder?:
Range(Range("list_columns").Cells(1, 1), Range("list_columns").End(xlup)).Select
Dann wird aber von der ersten Zelle des Bereichs nach oben alles ausgewählt entweder bis eine nicht leere Zelle gefunden wurde oder bis zur Zeile A.
Oder wie meintest du?
Grüsse
Kailash
AW: Dann wirst du wohl alle Zellen im Bereich ...
21.02.2017 14:23:41
Daniel
Hi
wenn das "list_Columns" ein lückenloser Zellbereich ist, dann probier mal das
With Range("List_columns")
If .cells(.Rows.count, 1) = "" then
range(.Cells(1, 1), .Cells(.Rows.count, 1).End(xlup)).Select
else
.Select
end if
End with
Gruß Daniel
Anzeige
Daaaanke!!! Funktioniert :-)
21.02.2017 19:02:34
Kailash
He Daniel!
Was soll ich dazu sagen! Bin einfach nur sprachlos von eurem Excel Wissen.
Herzlichen Dank!
Weisst du auch warum bei diesem Teil des Codes
range(.Cells(1, 1), .Cells(.Rows.count, 1).End(xlup)).Select
nicht die letzte Zeile mit markiert wird?
Viele Grüsse
Kailash
Ich hatte dir ja geschrieben, die Zellen ...
21.02.2017 19:15:36
Luc:-?
…müssen wirklich leer sein und nicht nur so aussehen, Kailash! :-|
Da das bei den letzten nicht der Fall zu sein scheint, sie aber Formate oder gar LeerTexte enthalten bzw Fmln (auch nicht leer!), die solche zurückgeben, fktioniert Daniels Vorschlag.
Meiner hätte übrigens auch mit echten LeerZellen zwischendurch fktionieren müssen.
Die „letzte“ Zeile wird nur dann nicht markiert, wenn sie tatsächlich völlig leer ist! Allerdings muss ich mich bei dieser Frage doch sehr wundern, denn das wolltest du doch so haben! Das lässt mich auch vermuten, dass du nichts von dem verstanden hast, was ich dir erläutert hatte…
Luc :-?
Anzeige
AW: Daaaanke!!! Funktioniert :-)
21.02.2017 23:33:50
Daniel
Hi
das liegt daran, dass sich das End(xlup) unterschiedlich verhält, je nachdem ob die Ausgangszelle und die darüberliegenden Zellen befüllt sind oder nicht.
wenn die Ausgangszelle leer ist, springt es zur nächsten befüllten Zelle
ist die Ausgangszelle jedoch befüllt und die darüberliegende Zelle auch, springt es zur nächsten Leerzelle, hält aber in der Zelle davor an.
daher muss man eben prüfen was vorliegt und ggf unterschiedlich agieren.
du kannst das verhalten von End(xlup) auch von Hand ausprobieren, es entspricht der Tastenkombination ENDE+PFEIL (alle vier richtungen)
weiterhin muss man beachten, dass Zellen, die eine Formel enthalten nie leer sind, auch wenn sie leer aussehen wenn das Formelergebnis der Leerstring ist.
Gruß Daniel
Anzeige
Das scheint er eben nicht zu sein bzw enthält ...
21.02.2017 19:06:36
Luc:-?
…zum Schluss scheinbar leere, aber benutzte Zellen, Daniel,
sonst würde meine 2.Lösung bzw das, was Kailash hier zuletzt zeigte, auf jeden Fall fktionieren.
Durchgehen heißt, jede Zelle im benannten Bereich prüfen, Kailash,
also Schleife. Alternative: echte LeerZellen mit SpecialCells-Methode im Bereich suchen und die oberste der letzten zusammenhängenden .Offset(-1, 0) als EndZelle der Auswahl verwenden.
Gruß, Luc :-?
Für Luc
22.02.2017 11:54:47
Kailash
Hallo Luc!
Habe mal ne Datei gemacht.
Da siehst du dass nix in den Zellen ist und es dennoch nicht funktioniert.
https://www.herber.de/bbs/user/111659.xlsm
Daniels Vorschlag aber schon.
Hab trotzdem was von deinem Code gelernt.
Danke!
Viele Grüsse
Kailash
Anzeige
Das hängt dann doch mit den Leerzellen zusammen, …
22.02.2017 19:34:12
Luc:-?
…Kailash,
und natürlich der unterschiedlichen Wirkung von xlDown und xlUp. Da ich beide direkt auf den benannten Bereich angewendet hatte, findet Letzteres in deinem Bsp die Zelle über der 1. dieses Bereichs (als letzte nicht-leere Zelle) und verlässt somit hier die­sen Bereich, während Ersteres die letzte nicht-leere Zelle vor der 1. leeren in diesem Bereich findet. Gäbe es keine Leer­Zellen zwi­schen­durch, würde so auch bis zum letzten Eintrag ausge­wählt wdn (hier allerdings wg der Start­Kompo­nente inkl der Zelle E9).
Insofern ist Daniels Variante erfolgreicher, denn hier wird mit der 1.Zelle des Bereichs begonnen, während mein Grund für den Ein­satz der Start­Kompo­nente, leere Zellen am Anfang des benannten Bereichs, so nicht erfolgreich umgesetzt wdn kann (s.oben). Aller­dings hatte Daniel das gar nicht erst berück­sichtigt. Wollte man das aber tun, müsste man wohl folgendes Pgm benutzen:
Sub PartSelect()
Const naRelBer$ = "List_columns"
Dim rc As Long
With Range(naRelBer)
rc = .Rows.Count
Debug.Print .Cells(1).Address(0, 0), .Cells(rc).Address(0, 0) & vbLf & .Cells(1).End _
(xlDown).Address(0, 0), .Cells(1).End(xlUp).Address(0, 0) & vbLf & _
.Cells(rc).End(xlDown).Address(0, 0), .Cells(rc).End(xlUp).Address(0, 0)
If IsEmpty(.Cells(1)) Or IsEmpty(.Cells(rc)) Then
If IsEmpty(.Cells(1)) Then
Range(.End(xlDown), .Cells(rc).End(xlUp)).Select
Else: Range(.Cells(1), .Cells(rc).End(xlUp)).Select
End If
Else: .Select
End If
End With
End Sub
Die Debug.Print-Zeilen dienen hier nur zur Demo der Wirkung der beiden o.g. xlKonstanten auf Anfang und Ende des benannten Bereichs und können (später) entfernt wdn.
Falls die Zwischendurch-LeerZellen ebenfalls nicht ausgewählt wdn sollen, musst du auf meinen vorher­gehenden letzten Vor­schlag zurück­greifen, wodurch ein unzu­sammen­hängender Teil- des benannten Bereichs ausgewählt wdn könnte, wenn seine daten­haltigen Teile per vbFkt Union zusammen­gefasst würden.
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige