2016-07-21 9 views
0

Ich habe eine Multiselektions-Listbox mit der Option style (chk boxen auf der linken Seite). Ich habe den folgenden Code, um die ausgewählten Daten in das Arbeitsblatt zu übertragen (dies muss dynamisch sein, da die Listbox selbst von dynamischen benannten Bereichen gespeist wird).MultiSelection Listbox UserForm

Private Sub cmdRun_Click() 

Dim i As Integer 

i = 0 

Do While i < lstProperties.ListCount + 1 
    If lstProperties.Selected(i) = True Then 
    Sheet7.Cells(i + 1, 1) = lstProperties.List(i) 
    End If 
    i = i + 1 
Loop 

End Sub 

Es scheint, wie es arbeiten will, aber ich denke, wenn ich den Befehl ausführen wird das Entfernen des Hakens des Listenfeld Daten nach der ersten Schleife und damit nur die erste Auswahl im Listenfeld zur Umsetzung.

Weiß jemand, wie man das vermeidet?

Antwort

0

Sie werden für die Zeile Referenz eine separate Variable benötigen, so dass Sie es nur erhöhen können, wenn ein Element aus dem Listenfeld ausgewählt ist ...

Private Sub cmdRun_Click() 

Dim Rw As Integer 
Dim i As Integer 

Sheet7.Columns(1).ClearContents 

Rw = 1 
i = 0 
Do While i < lstProperties.ListCount 
    If lstProperties.Selected(i) = True Then 
     Sheet7.Cells(Rw, 1) = lstProperties.List(i) 
     Rw = Rw + 1 
    End If 
    i = i + 1 
Loop 

End Sub 
+0

Das seit macht, aber es wird nur noch hinzufügen erste Auswahl zum Arbeitsblatt. Es fühlt sich immer noch so an, als ob es das Benutzerformular nach der ersten Schleife aufruft und daher wird nichts ausgewählt, wenn es den Code erneut ausführt. –

+0

Der Code kopiert immer alle ausgewählten Elemente in Ihr Arbeitsblatt, beginnend in Zeile 1. Wenn Sie vorhandene Ergebnisse ersetzen möchten, müssen Sie die Spalte löschen, bevor Sie den Code erneut ausführen. Wenn Sie sie in die nächste verfügbare Zeile kopieren möchten, müssen Sie 'Rw = 1 'ändern, damit Sie Ihrer Variablen die nächste verfügbare Zeile zuweisen. – Domenic

+0

Wenn ich den Code genau so kopiere, wie Sie ihn angegeben haben, kopiert er das erste ausgewählte Element jedes Mal in die erste Zeile. Zum Beispiel, wenn ich Listenelement ABC & DEF ausgewählt habe, wird ABC in Zeile 1 kopiert; wenn ich nur DEF ausgewählt habe, wird DEF in Zeile 1 kopiert. Ist das so, weil ich initialisiere? 'Private Sub Userform_Initialize() Me.lstProperties.RowSource = "Filterdata" Me.lstStmts.RowSource = "propsNOI" Me.lstLoans.RowSource = "FilterLoans" End Sub' –

Verwandte Themen