VBA Listbox dynamisch letzten 5 Einträge aus Worksheet einlesen
#1
Hi Leute bin echt schon am verzweifeln!

Und zwar würde ich gerne eine ListBox mit meinen letzten 5 Einträge aus einem Blatt wo ständig neue Daten eigegeben werden, befüllen.
Ich komme nur zu der Lösung wo mir alles in der Listbox angezeigt wird und die letzte Zeile ausgewählt ist.

Code momentan:

Private Sub UserForm_Initialize()
History.RowSource = "test!A13:R" & Range("R" & Rows.Count).End(xlUp).Row

If History.ListCount > 0 Then
History.ListIndex = History.ListCount - 1
End If
End Sub

"History" ist der Name der ListBox1

Villeicht kann mir wer helfen...

Danke!


Angehängte Dateien Thumbnail(s)
       
Top
#2
Bitte keine Bilder !

z.B.

Code:
With Sheets(1).Columns(18).SpecialCells(2)
  Listbox1.List = .Offset(.Count - 5).SpecialCells(2).Value
End With
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • fr33lumby
Top
#3
Code:
With Worksheets("test").Columns(18).SpecialCells(2)
  History.List = .Offset(.Count - 5).SpecialCells(2).Value
End With

Also code läuft, Ergebnis jedoch noch nicht passend leider. Das mit den Letzten 5 Einträgen klappt, jedoch nimmt er nur die Einträge der Spalte 18 und nicht 1-18.
Trotzdem Danke für die schnelle Antwort!!!

Siehe Anhang

edit: Das mit den Bildern erst im nachhinein gelesen, wie sonst?


Angehängte Dateien Thumbnail(s)
   
Top
#4
Hi,

snb hat sicherlich eine Beispieldatei (.xlsx) gemeint.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • fr33lumby
Top
#5
@WW

Genau !

Code:
With Sheets(1).Columns(18).SpecialCells(2)
  Listbox1.List = .Offset(.Count - 5).SpecialCells(2).Offset(, -17).Resize(, 18).Value
End With

NB. Verzichte auf 'Rowsource'
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • fr33lumby
Top
#6
Hallo,

so:

Code:
Private Sub UserForm_Initialize()
Dim loLetzte As Long, loErste As Long

With Worksheets("test")
   loLetzte = .Cells(.Rows.Count, "N").End(xlUp).Row
   loErste = loLetzte - 4
   History.RowSource = "test!A" & loErste & ":R" & loLetzte
End With
End Sub


Gruß Werner
Top
#7
@snb

DANKE!!!! Das ist genau das was ich gesucht habe. Eine Frage bleibt jedoch wie bekomme ich den "ColumnHead"
wieder in die Liste, bei Eigenschaften am Objekt ist es aktiviert.

@Werner

dein Code funktioniert ebenfalls DANKE! Jedoch funktioniert das mit dem "ColumnHead" nicht.
Top
#8
Versuch mal:

Code:
       listbox1.AddItem Sheets(1).Cells(1).Resize(, 18).Value, 0
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#9
@snb dann kommt ein Laufzeitfehler -2147.......

edit: Typkonflikt
Top
#10
Hallo,

ColumnHead benutze ich nie. Einfach 18 Label mit entsprechender Beschriftung direkt oberhalb deiner Listboxspalten und gut ist.

Gruß Werner
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste