Listboxformatierung & dynamischer RowSource

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox
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

Beiträge aus den Excel-Beispielen zum Thema "Listboxformatierung & dynamischer RowSource"