Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Problem bei Wertebefüllung einer mehrspaltigen Listbox
#1
Clever-Excel Forum ich hab ein Problem!

Ich möchte meine während der UserForm_Initialize Prozedur  einspaltig befüllte ListBox1 durch Drüken des CommandButton1 mehrspaltig befüllen.

Dazu folgender Code:


Code:
Private Sub CommandButton1_Click()
Dim i%
ListBox1.Clear
For i = 1 To 10
With ListBox1
.AddItem
.ColumnCount = 3
.List(ListBox1.ListCount - 1, 0) = 10 * i
.List(ListBox1.ListCount - 1, 1) = 20 + i 'Fehlermeldung EigenschaftList konnte nicht gesetzt werden. (Nur wenn ListBox vorher einspaltig war!)
.List(ListBox1.ListCount - 1, 2) = 30 - i
'Optional:
'.ListStyle = fmListStylePlain
'.TextAlign = fmTextAlignRight
'.MultiSelect = fmMultiSelectMulti
'.ListStyle = fmListStyleOption
'.BorderColor = vbRed
End With
Next

End Sub

Sub UserForm_Initialize()

With ListBox1
.AddItem
.List = Application.Transpose(Range("B1:B10"))
End With

End Sub


Bei dem Code tritt folgendes Problem auf.

Wird während der  UserForm_Initialize  eine
einspaltige ListBox1 mit den Zellwerten von B1 bis B10
befüllt kommt es zu einer Fehlermelung, sobald ich durch
Drücken des CommandButton1 daraus eine mehrspaltige machen
möchte.

Streiche ich den gesamten ListBox1 Code innerhalb der
UserForm_Initialize Prozedur geschieht die mehrspaltige
Befüllung der ListBox beim Drücken des CommandButtons hingegen einwandfrei.
Antworten Top
#2
Hallo,

ich verstehe zwar den Sinn nicht, warum erst eine einspaltige Listbox eingerichtet werden soll, die dann in eine mehrspaltige "verwandelt" werden soll.
Da das nicht funktioniert, weil es wie bei einer Dim-Einrichtung nur eine Änderung mittels ReDim gibt, wenn die ursprüngliche Dim-Anweisung keine Größe beseitzt, schlage ich Dir einen etwas anderen Weg vor:

1. Richte mit der Inialize Deine mehrspaltige Listbox gleich ein und befülle sie mit dem, was du brauchst.
2. Lege über die Spalten, die du nicht gleich angezeigt haben willst, eine zweite Userform in der gleichen Farbe wie die erste und "verstecke" sie damit bereits in der Inialize.
3. Blende mit dem CommandButton_Click dann nach Bedarf die zweite Userform ein bzw. aus und mache so die weiteren Spalten damit sichtbar oder eben unsichtbar.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#3
Hallo Günter,

danke für die Info.

Man könnte es vielleicht schon mal so machen (ist noch ein Schnellschuß!!):

Private Sub CommandButton1_Click()  'Alle Spalten von B - E anzeigen
ListBox1.ColumnCount = 4
ListBox1.List = Range("B1:E10").Value
End Sub

Private Sub CommandButton2_Click() 'Nur die ersten beiden
ListBox1.ColumnCount = 2
End Sub

Private Sub CommandButton3_Click() 'Wieder alle Spalten von B-E anzeigen
ListBox1.ColumnCount = 4
End Sub


Aber da fehlen natürlich immer noch sehr viele Steuerungsmöglichkeiten
Antworten Top
#4
Hallo Leute,

ich nerv euch nochmal. Die beste Lösung für das Ein- und Ausblenden von Spalten die mir bislang eingefallen
ist läuft über den "Header" also folgende Code Ergänzung (beispielhaft versteht sich):

ListBox1.ColumnHeads = True

ListBox1.ColumnWidths = "4,5 cm ;3,5 cm;3,5 cm;1,5 cm"  'Individuell an die jeweils vorliegende ListBoxbreite auf der Userform anpassen!!

Will man z.B. die 2. Spalte ausblenden:
ListBox1.ColumnWidths = "4,5 cm ;0 cm;3,5 cm;1,5 cm"

Was mich zur nächsten Frage führt:
Wie würde ihr die Headerbreite in der Listbox mit der Maus verändern?
Antworten Top
#5
Schau mal hier:  http://www.snb-vba.eu/VBA_Fill_combobox_listbox_en.html
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


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