VBA um Werte aus einer listbox auf einem Tabellenblatt in Excel
Ich habe eine listbox namens ListBox1 in Tabelle1 der excel-Arbeitsmappe.
Jedesmal, wenn der Benutzer eines der Elemente in der Liste, die ich kopieren muss seinen Namen in eine variable namens strLB.
So, wenn ich Value1, Value2, Value3, Value4, und der Benutzer wählt Wert1 und Wert3, ich brauche meine strLB zu kommen als Wert1,Wert3. Ziemlich einfach.
Ich habe versucht zu tun, dass post-hoc - mit:
For i = 1 To ActiveSheet.ListBoxes("ListBox1").ListCount
If ActiveSheet.ListBoxes("ListBox1").Selected(i) Then strLB = strLB & etc.etc.
Next i
Aber diese ist sehr langsam (ich habe eigentlich 15k Werte in meine listbox). Das ist, warum ich brauchen, um Datensatz-Auswahl in Echtzeit und nicht in einem Zyklus, nachdem der Benutzer fertig ist die Eingabe.
Natürlich werde ich auch brauchen einen Weg, um zu überprüfen, ob der Benutzer entfernt von der vorherigen Auswahl ab.
Hoffe Euch helfen können!!
InformationsquelleAutor Bruder | 2012-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider für MSForms Listenfeld die Schleife durch die Elemente der Liste und überprüfen die Selected-Eigenschaft ist der einzige Weg. Allerdings ist hier eine alternative. Ich bin die Speicherung/entfernen des ausgewählten Elements in einer Variablen, Sie können dies tun, in einer entlegenen Zelle und den überblick behalten 🙂
Ich kann nicht scheinen zu finden, die äquivalent zu
.ListIndex
für eine listbox, nicht in einer userform. Ich bin am steckenActiveSheet.ListBoxes("ListBox1").list(ActiveSheet.ListBoxes("ListBox1").ListIndex)
es funktioniert nicht auf diese Weise...Wie sind Sie mit dem hinzufügen der listbox? Ist es ein ActiveX-Steuerelement?
Es ist tatsächlich eine Form der Kontrolle ich ausgewählt Deleveloper Tab -> Einfügen -> Formular-Steuerelemente. Sollte ich das ActiveX-Art statt?
Ah! Verwenden Sie eine AciveX-Steuerelement für die oben genannten 🙂
InformationsquelleAutor Siddharth Rout
Akzeptiert die Antwort nicht schneiden Sie es, weil, wenn ein Benutzer de-selektiert eine Zeile in der Liste ist nicht entsprechend aktualisiert.
Hier ist was ich vorschlagen statt:
Mit freundlicher Genehmigung von http://www.ozgrid.com/VBA/multi-select-listbox.htm
InformationsquelleAutor Joan-Diego Rodriguez
Erhält man den Wert für das ausgewählte Element einer listbox verwenden Sie dann die folgenden.
Für Einspaltige ListBox:
ListBox1.List(ListBox1.ListIndex)
Für Mehrspaltigen ListBox:
ListBox1.Column(column_number, ListBox1.ListIndex)
Dies vermeidet looping und ist extrem effizienter.
InformationsquelleAutor matt2405
Nehmen ausgewählte Wert:
InformationsquelleAutor Alex