Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1316to1320
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 gefüllte Zeile in List.Object

Letzte gefüllte Zeile in List.Object
26.06.2013 08:11:44
Nette13
Hallo zusammen,
ich habe ein kniffeliges Problem. Für mich zumindest. Ich möchte in einem List.Object die letzte gefüllte Zeile in einer Spalte ermitteln.
Aber mit diesem Code bringt er mich immer ans Tabellenende.
lr = Cells(Rows.Count, suchspalte).End(xlUp).Row
Ich muss in diesen Code irgendwie das Tabellenobject einbauen, aber weiß leider nicht wie. Hat jemand von Euch eine Idee?
Ich sage schon mal Danke.
Gruß
Annette

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte gefüllte Zeile in List.Object
26.06.2013 08:32:13
Tino
Hallo,
was meinst Du mit List.Object?
Dein Codeschnipsel weist auf die letzte Zeile in der suchspalte in einer Tabelle.
(Tabelle kommt drauf an wo der Code steht)
Die letzte Spalte in einer Zeile müsste so gehen.
lr = Cells(suchZeile,Columns.Count).End(xltoleft).column
Gruß Tino

AW: Letzte gefüllte Zeile in List.Object
26.06.2013 08:37:43
Luschi
Hallo nette Anette,
so sollte es auch bei Dir funktionieren:

Sub test1()
MsgBox lastRow_oList("Tabelle1")
End Sub
Function lastRow_oList(xName As String)
Dim oList As ListObject, n As Long
Set oList = Me.ListObjects("Tabelle1")
n = oList.DataBodyRange.SpecialCells(xlCellTypeLastCell).Row
Set oList = Nothing
lastRow_oList = n
End Function
Gru0 von Luschi
aus klein-Paris

Anzeige
AW: Letzte gefüllte Zeile in List.Object
26.06.2013 08:50:26
Luschi
Hallo nette Anette,
um es variabler zu mac hen sollte man die Funktion in ein Modul stecken und dann sieht das so _ aus:

Sub test1()
MsgBox lastRow_oList("Tabelle1", "Liste_01")
End Sub
Function lastRow_oList(xTabName As String, xListName As String)
lastRow_oList = ThisWorkbook.Worksheets(xTabName).ListObjects(xListName).DataBodyRange. _
SpecialCells(xlCellTypeLastCell).Row
End Function
wobei 'Tabelle1' der Tabellenname und 'Liste_01' der Name des ListObjektes ist.
Gruß von Luschi
aus klein-Paris

AW: Letzte gefüllte Zeile in List.Object
26.06.2013 09:02:23
hary
Moin Luschi
Zum Verstehen.
Hab ich auch probiert,aber er zeigt mir mit:
SpecialCells(xlCellTypeLastCell).Row
die nur die letzte Zeile an(5) wenn z.B. von 5 Zeilen nur die ersten 3 belegt sind.
Hab es so geloest:
With Worksheets("Tabelle1").ListObjects("Tabelle1").DataBodyRange
MsgBox .Cells(.Rows.Count, 1).End(xlUp).Row
End With

Muss doch aber auch gehen die 1 zu ersetzten mit der Spaltenueberschrift.
So ganz steig ich noch nicht durch beim Tabellentool.
gruss hary

Anzeige
AW: Letzte gefüllte Zeile in List.Object
26.06.2013 09:47:41
Luschi
Hallo Harry,
Du hast Recht, wenn man das Listobjekt mit der Maus durch ziehen am Rahmen erweitert,
gibt meine Funktion nur die letzte beschreibene Zellzeile zurück, deshalb so:

Sub test1()
MsgBox lastRow_oList("Tabelle2", "meineListe_2")
End Sub
Function lastRow_oList(xTabName As String, xListName As String) As Long
Dim oList As ListObject
Dim adr As String, n As Long
Set oList = ThisWorkbook.Worksheets(xTabName).ListObjects(xListName)
adr = Split(oList.Range.Address, ":", -1, vbTextCompare)(1)
Set oList = Nothing
lastRow_oList = ThisWorkbook.Worksheets(xTabName).Range(adr).Row
End Function
Gruß von Luschi
aus klein-Paris
PS: Auch Dein Versuch bringt unter den gegebenen Umständeen nicht das korrekte Ergebnis.

Anzeige
AW: Letzte gefüllte Zeile in List.Object
26.06.2013 09:52:05
Nette13
Vielen lieben Dank Euch allen. Ich habe es letztendlich so gelöst wie Luschi. Das erschien mir am leichtesten verständlich.
VBA kann das Leben so viel einfacher machen... Danke nochmals.
Gruß
Eure nette Annette

AW: Letzte gefüllte Zeile in List.Object
26.06.2013 10:07:30
Luschi
Hallo Harry,
hier noch eine Antwort auf Deine eigentliche Frage:

Function firstCol_oList(xTabName As String, xListName As String) As Long
firstCol_oList = ThisWorkbook.Worksheets(xTabName).ListObjects(xListName).Range.Cells(1, 1). _
Column
End Function
Sub test3()
MsgBox firstCol_oList("Tabelle2", "meineListe_2")
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Ich meinte so
26.06.2013 10:41:48
hary
Moin Luschi
Das passt so doch nicht, ich brauche Zeile 5. Hier mit dem ersten Code.
Userbild
gruss hary

verdacht
26.06.2013 11:21:50
Tino
Hallo,
ich nehme an dies verhält sich wie mit dem UsedRange/Benutzter Bereich in einer normalen Tabelle.
Teste mal diese Variante
Sub Beispiel()
Dim oList As ListObject, rngLetzte As Range
Set oList = Tabelle1.ListObjects(1)
Set rngLetzte = FindLetzte(oList.Range)
MsgBox rngLetzte.Row
End Sub

Function FindLetzte(rngRange As Range) As Range
Dim LRow As Long, LCol As Long
Dim A As Long
 
 With rngRange
   On Error Resume Next
        'Finde Zeile 
        LRow = .Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
        LRow = Application.Max(LRow, .Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
        If LRow = 0 Then LRow = 1
   
        'Finde Spalte 
        For A = .Columns(.Columns.Count).Column To .Columns(1).Column Step -1
              LCol = .Columns(A).Find("*", , xlValues, xlWhole, xlByRows, xlPrevious).Column
              LCol = Application.Max(LCol, .Columns(A).Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Column)
              If LCol > 1 Then: LCol = A: Exit For
        Next A
        If LCol = 0 Then LCol = 1
        Set FindLetzte = .Parent.Cells(LRow, LCol)
 End With
 
 
End Function
Gruß Tino

Anzeige
AW: verdacht
27.06.2013 08:27:19
hary
Moin Tino
Danke, klappt.
gruss hary

noch 1 Hinweis...
26.06.2013 09:03:40
Luschi
..., das funktioniert aber nur, wenn kein Blattschutz existiert oder der Blattschutzparameter UserInterfaceOnly:=True gesetzt wurde.
Gruß von Luschi
aus klein-Paris

91 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige