2017-11-21 11 views
0

Jungs Ich hoffe, jemand kann mir mit diesem helfen. Ich habe ein Kombinationsfeld, das Daten aus einem benannten Bereich enthält, und ich möchte einen Wert aus dem Kombinationsfeld auswählen und es dem List-Feld hinzufügen.VBA Excel - Combobox Element zu Listbox

Momentan kann ich ein Element mit einer Schaltfläche in das Listenfeld einfügen, aber sobald ich ein anderes hinzufüge, überschreibt es das aktuelle Element.

Auch Es muss in der Lage sein, unten ein Element hinzuzufügen, wenn das Listenfeld bereits einige Werte enthält.

Ich denke, es hat etwas mit der Suche nach der letzten Reihe zu tun, aber ich bin nicht sicher, jede mögliche Hilfe wäre sehr geschätzt :)

image of the issue

Dim i As Integer 

With Me.lb_lease 

.ColumnCount = 3 
.ColumnWidths = "200;50;50" 
.AddItem 
.List(i, 0) = cbox_hardware.Column(0) 
.List(i, 1) = cbox_hardware.Column(1) 
.List(i, 2) = cbox_hardware.Column(2) 
i = i + 1 

End With 
+0

Ist dies innerhalb einer Schleife? Was ist "ich" gleich? – Tom

+0

Auch, ich denke, das wird Ihr Problem lösen [Link] (https://stackoverflow.com/a/6973396/3042759) – Tom

+0

Es ist der Code für eine Schaltfläche, ich habe nur die Schleife nur durch verschiedene Code hier auf so gesehen ein wenig unsicher sorry –

Antwort

0

Ich schlage vor, die Maßnahmen zur Trennung von Einrichten der Listbox und Hinzufügen von Elementen zu ihr. Das folgende Verfahren richtet die Box ein und löscht alle vorhandenen Inhalte. Ändern Sie die Namen des Arbeitsblatts und der Listbox, um Ihren Umständen zu entsprechen. Der Code funktioniert auch, wenn sich die Listbox in einem Benutzerformular befindet.

Private Sub ResetListBox() 

    With Worksheets("LibraryAccount").ListBox1 
     .ColumnCount = 3 
     .ColumnWidths = "80;50;50" 
     .Clear       ' delete current list 
    End With 
End Sub 

Die nächste Prozedur fügt ein Element hinzu. Es erfordert eine Semikolon getrennte Zeichenfolge, wie "One; Two; Three". Sie können es aus Ihrem Combobox-Ergebnis mit ListIndex verketten, um die Zeile zu identifizieren. Die Prozedur zerlegt die Zeichenfolge und fügt sie am Ende der Liste hinzu. Arbeitsblatt- und ListBox-Namen müssen geändert werden.

Private Sub AddToListBox(AddArray As String) 

    Dim Arr() As String 
    Dim i As Integer 
    Dim C As Long 

    Arr = Split(AddArray, ";") 

    With Worksheets("LibraryAccount").ListBox1 
     i = .ListCount 
     .AddItem 
     For C = 0 To 2 
      .List(i, C) = Arr(C) 
     Next C 
    End With 
End Sub 

Das folgende Verfahren dient zum Testen des obigen Verfahrens. Sie können ResetListbox ausführen und dann TestAdd mehrmals aufrufen.

Private Sub TestAdd() 
    AddToListBox "One;Two;Three" 
End Sub 
Verwandte Themen