Hallo Forum,
Kann man/frau die Zeilen oder den Hintergrund der Zeilen in der Listbox unterschiedlich einfaerben?
Ist die Listbox wirklich auf 10 Spalten begrenzt?
Danke
P.S.Die Listbox wird durch Userformeingaben gefuellt(keine Exceltabelle).
Danke
Hi,
1. Nein
2. "Ist die Listbox wirklich auf 10 Spalten begrenzt?" Nein, wenn sie mittels
List oder Column gefüllt wird.
mfg Lars
AW: Unterschiedliche Farben in der Listbox
07.03.2006 22:04:26
alex
Danke
aber zu 2 habe ich eine frage.
Ich fuelle die listbox mit
ListBox30.List(1, 1) = "AHA"
funktiomiert auch ganz gut bis
ListBox30.List(1, 9) = "AHA"
alles weitere
ListBox30.List(1, 10) = "AHA"
ergibt eine Fehlermeldung
AW: Unterschiedliche Farben in der Listbox
07.03.2006 22:13:30
Ramses
Hallo
ein Auszug aus der VBA-Online Hilfe
"...Wenn ColumnCount auf 0 gesetzt wird, werden keine Spalten angezeigt. Wird die Eigenschaft auf -1 gesetzt, dann werden alle verfügbaren Spalten angezeigt. Bei ungebundenen Datenquellen liegt die Obergrenze bei 10 Spalten (0 bis 9)...."
Gruss Rainer
Anzeige
kleiner Wiederspruch bez. Spaltenzahl
07.03.2006 22:35:13
Nepumuk
Hi,
nur bei der AddItem - Metode ist die Anzahl der Spalten auf 10 begrenzt. Nicht beim füllen mit einem Array über die List - Eigenschaft. Beispiel:
PrivateSub UserForm_Activate() Dim strArray(1 To 50, 1 To 30) AsString Dim intRow As Integer, intColumn AsInteger For intColumn = 1 To 30 For intRow = 1 To 50 strArray(intRow, intColumn) = CStr(intColumn) & " / " & CStr(intRow) Next Next With ListBox1 .ColumnCount = 30 .List = strArray EndWith EndSub
Hallo Nepumuk
Ein Array ist aber doch eigentlich ein "gebundenes" Datenfeld das wie eine "RowSource" behandelt wird.
Es reicht auch die Listbox nur damit quasi zu "eröffnen" OptionExplicit
PrivateSub CommandButton1_Click() Dim strArray(1, 1 To 30) AsString Dim intRow As Integer, intColumn AsInteger For intColumn = 1 To 30 strArray(1, intColumn) = CStr(1) & " / " & CStr(intRow) Next With ListBox1 .ColumnCount = 30 .List = strArray EndWith MsgBox "Und nun..." With Me.ListBox1 .AddItem .List(.ListCount - 1, 3) = "Geht auch..." EndWith EndSub
Gruss Rainer
Anzeige
Umweg
07.03.2006 23:27:10
Nepumuk
Hallo Rainer,
wenn du schon mit einem Array anfängst, warum machst du damit nicht weiter. Das ist doch viel schneller als die Box häppchenweiße zu füttern.
PrivateSub UserForm_Activate() Dim strArray() AsString Dim intRow As Integer, intColumn AsInteger For intRow = 1 To 50 RedimPreserve strArray(1 To 30, 1 To intRow) For intColumn = 1 To 30 strArray(intColumn, intRow) = CStr(intColumn) & " / " & CStr(intRow) Next Next With ListBox1 .ColumnCount = 30 .List = WorksheetFunction.Transpose(strArray) EndWith EndSub
Hallo Nepumuk
... um zu zeigen, dass es danach auch wieder mit "AddItem" geht.
Offensichtlich muss die ListBox nur erstmalig mit einem Array "präpariert" werden, um sie danach Häppchenweise, über die Limite von 10 hinaus, weiterfüttern zu können.
Allerdings ist die Limitierung dann die Grösse des Eröffnungsarrays.
Es kann nicht ein Eintrag hinzugefügt werden, der NACH dem letzten Feld des "Eröffnungs"-Arrays liegt.
Gruss Rainer
nur ein kleines zaghaftes aber
08.03.2006 01:13:26
alex
Erstmal Danke fuer die Tipps,
Aber :-(
Wenn ich die listbox ueber ein Array (z.b 50,30)fuelle aber erst einen eintrag (1. Zeile)gemacht habe wird bereits eine listbox mit ihren max. eintraegen (50,30) angezeigt.
Nicht schoen da ich eine listbox mit liststyleoption verwende und dadurch nach einem eintrag in der listbox bereits die Buttons(schauen aus wie optionbuttons)fuer die anderen 49 zeilen sehe obwohl noch keine eintraege gemacht wurden.
War wohl nix
Anzeige
AW: nur ein kleines zaghaftes aber
08.03.2006 07:26:24
Nepumuk
Hallo Alex,
in meinem zweiten Beispiel wird gezeigt, wie du ein dynamisches Array benutzt. Gruß
Nepumuk