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?
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. –
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
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' –