Herbers Excel-Forum - das Archiv

Listboxformatierung & dynamischer RowSource

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
ListBox UserForm
Bild

Betrifft: Listboxformatierung & dynamischer RowSource
von: Andre

Geschrieben am: 11.03.2005 11:01:42
Hi zusammen,
mit folgendem Code (teilweise ein Tip aus diesem Forum, danke!) wird dem Betrachter vorgegaukelt die Listbox sei sowohl links- als auch rechtsbündig formatiert (nur bei Schriftart "Courier New"!).
Private Sub UserForm_Activate()
With Worksheets("Tabelle1")
'LetzteZeileListe = .Cells(Cells.Rows.Count, 2).End(xlUp).Row
Dim arr(1 To 65536, 2 To 7)
Dim iRow As Integer, iCol As Integer
For iRow = 1 To LetzteZeileListe
For iCol = 2 To 7
If iCol = 4 Then
arr(iRow, iCol) = String(8 - _
Len(Cells(iRow, iCol).Text), " ") & _
Cells(iRow, iCol).Text
Else
arr(iRow, iCol) = Cells(iRow, iCol)
End If
Next iCol
Next iRow
ListBox1.List = arr
ListBox1.ColumnCount = 6
ListBox1.ColumnHeads = False
ListBox1.ColumnWidths = "2,2cm;2cm;6cm;1,8cm;2,2cm;0,2cm"
End With
End Sub

Läuft auch klasse, aber mein Problem ist: nun kann ich die RowSource-Eigenschaft meiner Listbox nicht mehr dynamisch einstellen, da ich die Zeilennummer, die ich durch 'LetzteZeileListe' ermittle nicht an mein Array übergeben kann.
Weiß jemand Rat, wie ich meiner Listbox dennoch beibringen könnte, nur den Bereich bis zur letzten nicht leeren Zeile darzustellen?
Gruß Andre
Bild

Betrifft: AW: Listboxformatierung & dynamischer RowSource
von: Andre
Geschrieben am: 11.03.2005 11:28:47
Ok, etwas weiter bin ich schon:
Ich ergänze forlgendes:
If arr(iRow, 2) <> "" Then
ListBox1.AddItem (arr(iRow, 4))
End If
Aber so kann ich nur einen Wert in die Listbox einfügen, nicht aber die ganze Zeile.
Steh etwas auf dem Schlau!
Bild

Betrifft: AW: Listboxformatierung & dynamischer RowSource
von: Andre

Geschrieben am: 11.03.2005 13:47:17
Erledigt, hier ist die Lösung zu meinem Problem:
Private Sub UserForm_Activate()
With Worksheets("Tabelle1")
LetzteZeileListe = .Cells(Cells.Rows.Count, 2).End(xlUp).Row
Dim arr(1 To 65536, 2 To 7)
Dim iRow As Integer, iCol As Integer
For iRow = 1 To LetzteZeileListe
For iCol = 2 To 7
If iCol = 4 Then
arr(iRow, iCol) = String(8 - _
Len(Cells(iRow, iCol).Text), " ") & _
Cells(iRow, iCol).Text
Else
arr(iRow, iCol) = Cells(iRow, iCol)
End If
Next iCol
ListBox1.AddItem (arr(iRow, 2))
If iRow = 1 Then
ListBox1.List(0, 1) = (arr(1, 3))
ListBox1.List(0, 2) = (arr(1, 4))
ListBox1.List(0, 3) = (arr(1, 5))
Else
ListBox1.List(iRow - 1, 1) = (arr(iRow, 3))
ListBox1.List(iRow - 1, 2) = (arr(iRow, 4))
ListBox1.List(iRow - 1, 3) = (arr(iRow, 5))
End If
Next iRow
ListBox1.ColumnCount = 6
ListBox1.ColumnHeads = False
ListBox1.ColumnWidths = "2,2cm;2cm;6cm;1,8cm;2,2cm;0,2cm"
End With
End Sub

Gruß Andre
 Bild
Excel-Beispiele zum Thema "Listboxformatierung & dynamischer RowSource"
Dynamischer Monatsarbeitsplan Dynamischer Blattname in SVERWEIS-Formel
Dynamischer Hyperlink Dynamischer Kalender mit Jahr, Quartal und Monaten