Discussion:
ListBox.AddItem mehrspaltig
(zu alt für eine Antwort)
Friedel Jantzen
2003-12-27 14:01:57 UTC
Permalink
Hallo Alle!

Ich habe in einem UserForm eine mehrspaltige ListBox,
die ich nun zeilenweise füllen möchte.
Wenn ich

Dim EinString As String
ListBox.AddItem EinString

schreibe, wird der String immer nur in die erste Spalte geschrieben,
habe auch Separatoren wie vbCr und Tab probiert.
Wenn ich als Parameter ein String-Array angebe,
wird der Typ nicht akzeptiert.
Wie schreibe ich eine ganze Zeile in die mehrspaltige ListBox?

Ich habe auch Probleme mit der Column-Eigenschaft:
ListBox.Column(1,1) = "Text in Spalte1, Reihe1"
wird nicht akzeptiert, Fehlermeldung 381:
"Eigenschaft Column konnte nicht gesetzt werden.
Index des Eigenschaftenfelds ungültig."

Was mache ich da falsch,
und wie schreibe ich einen String in eine bestimmte
Zelle der mehrspaltigen ListBox?

Vielen Dank für Eure Geduld,
Friedel
Melanie Breden
2003-12-27 16:55:25 UTC
Permalink
Hallo Friedel,
Post by Friedel Jantzen
Ich habe in einem UserForm eine mehrspaltige ListBox,
die ich nun zeilenweise füllen möchte.
Wenn ich
Dim EinString As String
ListBox.AddItem EinString
schreibe, wird der String immer nur in die erste Spalte geschrieben,
habe auch Separatoren wie vbCr und Tab probiert.
Wenn ich als Parameter ein String-Array angebe,
wird der Typ nicht akzeptiert.
Wie schreibe ich eine ganze Zeile in die mehrspaltige ListBox?
ListBox.Column(1,1) = "Text in Spalte1, Reihe1"
"Eigenschaft Column konnte nicht gesetzt werden.
Index des Eigenschaftenfelds ungültig."
hast du die Anzahl Spalten in der ColumnCount-Eigenschaft festgelegt?
Post by Friedel Jantzen
Was mache ich da falsch,
und wie schreibe ich einen String in eine bestimmte
Zelle der mehrspaltigen ListBox?
die erste Spalte einer ListBox füllst du mit der AddItem-Methode.
Alle weiteren Spalten über die List-Eigenschaft.
Dazu eine Prozedur, welchen den Text von zwei Arrays in ein Listenfeld füllt:

Beachte dabei, dass die Datenfelder nicht bei 0, sondern durch die
'Option Base1'-Anweisung bei 1 beginnen!

Option Base 1
Private Sub UserForm_Initialize()
Dim Text1 As Variant
Dim Text2 As Variant
Dim intI As Integer

Text1 = Array("das", "ist", "ein", "Test")
Text2 = Array("zweite", "Zeile", "im", "Listenfeld")

With ListBox1
.Clear
' Anzahl Spalten festlegen
.ColumnCount = UBound(Text1)

' erste Spalte füllen
.AddItem Text1(1)
.AddItem Text2(1)

For intI = 2 To UBound(Text1)
' erste Zeile
.List(0, intI - 1) = Text1(intI)
' zweite Zeile
.List(1, intI - 1) = Text2(intI)
Next intI

End With
End Sub


--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Thomas Gahler
2003-12-27 20:01:58 UTC
Permalink
Hallo Friedel
Post by Friedel Jantzen
Wie schreibe ich eine ganze Zeile in die mehrspaltige ListBox?
Mit '.List' oder mit '.Column'.


Private Sub UserForm_Initialize()
Dim cTest(0 To 1, 0 To 1) As String

With ListBox1
.ColumnCount = 2

'Variante 1
cTest(0, 0) = "Zeile 1, Links"
cTest(0, 1) = "Zeile 1, Rechts"
cTest(1, 0) = "Zeile 2, Links"
cTest(1, 1) = "Zeile 3, Rechts"
'Zeile, Spalte
.List = cTest()

'Variante 2
.AddItem
'Zeile, Spalte
.List(2, 0) = "Zeile 3, Links"
.List(2, 1) = "Zeile 3, Rechts"

'Variante 3
.AddItem
'Spalte, Zeile
.Column(0, 3) = "Zeile 4, Links"
.Column(1, 3) = "Zeile 4, Rechts"

End With
End Sub


--
Thomas Gahler
MVP für WordVBA

- Windows XP, Office XP (SP2)
Friedel Jantzen
2003-12-28 13:06:55 UTC
Permalink
Danke Euch beiden,
Friedel

Loading...