Clever-Excel-Forum

Normale Version: Multichoice ListBox anwenden um Daten von Sheet1 nach Sheet2 zu kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Liebe Community,

ich bin neu im Forum und hoffe ich verletze mit meinem Post keine Regeln.
Ich verzweifle seit einiger Zeit an folgendem Problem. In meinem Workbook wende ich folgenden VBA code an, um Werte auf Basis von 2 Dropdowns von Sheet "Data Source" nach Sheet "Report" zu kopieren:

Code:
Sub search_and_extract_doublecriteria()
Application.ScreenUpdating = False
Dim datasheet As Worksheet
Dim reportsheet As Worksheet
Dim agentname As String
Dim priopartner As String
Dim finalrow As Integer
Dim i As Integer
'set variables
Set datasheet = Sheet7
Set reportsheet = Sheet1
agentname = reportsheet.Range("D2").Value
priopartner = reportsheet.Range("D4").Value
'clear old data from report sheet
reportsheet.Range("B8:T1000").ClearContents
'goto datasheet and start searching and copying
datasheet.Select
finalrow = Cells(Rows.Count, 1).End(xlUp).Row
'loop through the rows to find the matching records
For i = 2 To finalrow
    If Cells(i, 19) = agentname And Cells(i, 11) = priopartner Then
    Range(Cells(i, 1), Cells(i, 19)).Copy
    reportsheet.Select
    Range("B1000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    datasheet.Select
    End If
   
    Next i
   
reportsheet.Select
Application.ScreenUpdating = True
   
End Sub

Soweit funktioniert alles. Nun habe ich allerdings die Anforderung dem User die Möglichkeit zu geben mehrere Werte innerhalb der Dropdowns auswählen zu können. Dies ist bei meiner aktuellen Lösung nicht möglich. Nun hatte ich die Idee die Dropdown Menüs mit 2 Multichoice Listboxen zu ersetzen.

Leider fehlen mir nun die VBA-Kenntnisse um meine Idee in die Praxis umzusetzen. Ich habe eine anonymisierte Version meines Workbooks hochgeladen. Dort ist meine aktuelle und "Wunschlösung" zu finden.

Ich hoffe ich finde mithilfe dieser Community eine Lösung für mein Problem.

Ich bedanke mich schonmal im Voraus für Eure Mühe!
Hallöchen,

mal ein erster Tipp. Nimm Listboxen aus dem unteren Teil - ActiveX … bei denen kannst Du die selectierten Einträge auslesen. Im Prinzip so:

Code:
With ListBox1
   For iCnt = 0 To .ListCount - 1
      If .Selected(iCnt) = True Then MsgBox .List(lCount)
   Next
End With
Hi

Am einfachsten mit dem erweiterten Filter.
Dann kannst du auch UND-ODER Bedingungen stellen.

Gruß Elex