Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1024to1028
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

letzte benutzte Zeile eines Namens-Bereichs

letzte benutzte Zeile eines Namens-Bereichs
23.11.2008 19:43:00
Klaus
Hallo Forum,
wie bringe ich die letzte benutzte Zeile eines benannten Bereichs in eine Variable?
Beispiel:
Bereichsname = Testfeld
Name Testfeld besteht aus Text, Formeln und Datümern
Formeln dürfen NICHT gefunden werden
Mit
LAST = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
werden auch die Formeln erkannt
Für Antworten Danke im voraus
Klaus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte benutzte Zeile eines Namens-Bereichs
23.11.2008 20:12:00
Erich
Hallo Klaus,
die Aufgabe ist für mich nicht so recht eindeutig. Sollen Zellen, in denen eine Formel steht,
von der Betrachtung ganz ausgeschlossen werden?
Wenn in B2 der Wert abc steht und in B4 die Formel ="abc": Ist dann 2 die letzte Zeile?
Machst du einen Unterschied zwischen leeren Zellen und Zellen in denen eine leere Zeichenkette steht?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: letzte benutzte Zeile eines Namens-Bereichs
23.11.2008 20:19:53
Klaus
Hallo Erich,
danke für Deine Antwort
[Wenn in B2 der Wert abc steht und in B4 die Formel ="abc": Ist dann 2 die letzte Zeile?]
Ja, B2 soll dann die letzte Zeile sein. Leere Zeichenketten kommen im Normalfall nicht vor,
aber im Falle eines Falles sollten sie ebenfalls nicht mitgezählt werden
Gruß
Klaus
Anzeige
AW: letzte benutzte Zeile eines Namens-Bereichs
23.11.2008 20:39:00
Gerd
Hallo Klaus,
sowas?

Sub b()
Dim rngA as Range,rngB As Range, lngRowLast as long
Set rngA = Intersect(Cells.SpecialCells(xlCellTypeConstants), Range("Mein_Bereich"))
Set rngB = rngA.Find(what:="*", After:=rng.Cells(1), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
if not rngB is nothing then lngRowLast= rngB.Row
End Sub


Gruß Gerd

AW: letzte benutzte Zeile eines Namens-Bereichs
23.11.2008 20:51:00
Klaus
Hallo Erich,
bei
Set rngB = rngA.Find(what:="*", After:=rng.Cells(1), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
bekomme ich einen Laufzeifehler 424, "Objekt erforderlich"
Gruß
Klaus
Anzeige
AW: letzte benutzte Zeile eines Namens-Bereichs
24.11.2008 11:56:00
JogyB
Hi.
Gerd hatte einen kleinen Fehler eingebaut, außerdem geht die Bestimmung von rngA einfacher.

Sub test()
Dim rngA As Range
Dim rngB As Range
Dim lngRowLast As Long
Set rngA = Range("Mein_Bereich").SpecialCells(xlCellTypeConstants)
If Not rngA Is Nothing Then _
Set rngB = rngA.Find(what:="*", After:=rngA.Cells(1), SearchOrder:=xlByRows,  _
SearchDirection:=xlPrevious)
If Not rngB Is Nothing Then lngRowLast = rngB.Row
End Sub

So funktioniert es und das wesentlich schneller als die andere Methode, die kann bei großen Bereichen recht lange dauern.
Am besten hätte mir natürlich noch rngA.SpecialCells(xlCellTypeLastCell).Row zur Bestimmung der Zeile gefallen, aber das nimmt immer die letzte Zelle des Arbeitsblattes.
Gruss, Jogy

Anzeige
AW: letzte benutzte Zeile eines Namens-Bereichs
24.11.2008 15:43:00
Klaus
Hallo Jogy,
auch Dir und Gerd (den ich fälschlicherweise mit Erich angesprochen hatte, sorry)
noch einmal ein kräftiges Dankeschön – das ist ein echt tolles Forum hier!
Gruß
Klaus
AW: letzte benutzte Zeile eines Namens-Bereichs
25.11.2008 00:39:00
Erich
Hallo Klaus und Jogy,
habt ihr test() einmal getestet, wenn alle Zellen von Mein_Bereich leer sind?
Bei mir kommt da ein 1004er Fehler in der Zeile "Set rngA = ...".
Mein Vorschlag:

Sub b1()
Dim rngA As Range, rngF As Range, lngRowLast As Long
If Intersect(Cells.SpecialCells(xlCellTypeConstants), _
Range("Mein_Bereich")) Is Nothing Then
MsgBox "'Mein_Bereich' enthält keine Konstanten."
Else
Set rngA = Range("Mein_Bereich").SpecialCells(xlCellTypeConstants)
Set rngF = rngA.Find(what:="*", After:=rngA.Cells(1), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If rngF Is Nothing Then
MsgBox "'Mein_Bereich' enthält keine nichtleere Konstante."
Else
lngRowLast = rngF.Row
MsgBox "Letzte Zeile: " & lngRowLast
End If
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: letzte benutzte Zeile eines Namens-Bereichs
25.11.2008 17:14:44
Klaus
Hallo Erich,
ja danke, dass hatte ich auch schon gemerkt und
eine entsprechende Prüfung eingebaut ...
Gruß
Klaus
AW: letzte benutzte Zeile eines Namens-Bereichs
23.11.2008 20:51:13
Daniel
Hi
du könnest dir dafür eine Funktion schreiben, durch die Specialcells-Funktion werden Formeln ausgeschlossen:

Function LetzteBenutzteZeileOhneFormeln(rng As Range) As Long
Dim Zelle As Range
On Error GoTo ende
For Each Zelle In rng.SpecialCells(xlCellTypeConstants, 23)
If LetzteBenutzteZeileOhneFormeln 


das sieht im Code dann so aus:


Dim Last as long
Last = LetzteBenutzteZeileOhneFormeln(Range("Testfeld"))


Gruß, Daniel

Anzeige
AW: super
23.11.2008 20:57:02
Klaus
Hallo Daniel,
funktioniert super – vielen Dank dafür!
Gruß aus Hamburg
Klaus

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige