Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

UserForm ListBox nach 2 Kriterien füllen

Betrifft: UserForm ListBox nach 2 Kriterien füllen von: Andreas
Geschrieben am: 08.11.2020 15:05:30

Hallo Excelfreunde,
Erst mal allen noch ein schönes Wochenende

Ich würde gern den unten aufgeführten Code noch etwas erweitern.
Folgendes: Der Code füllt mir in meiner UserForm die ListBox nach Auswahl des Kriteriums in der ComboBox51 (befindet sich auch in der UserForm)
Die Daten welche in die ListBox eingelesen werden sollen befinden sich im Tabellenblatt "Erfassung_Bearbeitung" in diesem Fall in Spalte "H"
Dieses Makro macht auch zuverlässig das was es machen soll. Nämlich durch Auswahl in der ComboBox gewälten Begriff im Tabellenblatt "Erfassung_Bearbeitung" suchen und gefundene Datensätze in die ListBox schreiben.
Ich möchte jetzt aber gern noch ein zweites Kriterium dazunehmen das mir per Auswahl aus der zweiten ComboBox72 (auch in der UserForm) im Tabellenblatt "Erfassung_Bearbeitung" Spalte "AB" den Wert sucht
wenn jetzt der Wert aus der ComboBox51 in der Spalte "H" gefunden wurde und gleichzeitig der Wert aus der ComboBox72 in der Spalte "AB" gefunden wurde sollen mir die nach beiden Kriterien gefilterten Datensätze in die List Box geschrieben werden.

Habe nach tagelangen rumexperimentieren keine passende Lösung dazu gefunden.
Wie muss ich meinen Code abändern oder wo muss gegebenenfalls die Codezeile einfügen das beide Kriterien berücksichtigt werden und nicht wie unten im Code nur 1 Kriterium berücksichtigt wird.

Private Sub cmdSuchen_Team_Click()
    Dim c As Range
    Dim rngBereich As Range
    Dim lngAnzahl As Long
    Dim strFirst As String
    
    ListBox1.Clear
    Application.ScreenUpdating = False
    With Sheets("Erfassung_Bearbeitung")
        Set rngBereich = .Columns("H:H")       'sucht in Spalte "H" nach  Team
'es soll jetzt aber nach Spalte "H" und nach Spalte "AB" gesucht werden
'hier brauche ich eine Lösung welche ich aber selbst nicht gelöst bekomme

        Set c = rngBereich.Find(ComboBox51, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
        strFirst = c.Address
            Do
            ListBox1.AddItem .Cells(c.Row, 1)
            lngAnzahl = ListBox1.ListCount
             ListBox1.List(lngAnzahl - 1, 1) = .Cells(c.Row, 1)      'ID
             ListBox1.List(lngAnzahl - 1, 2) = .Cells(c.Row, 2)      'Equipment-Nummer
             ListBox1.List(lngAnzahl - 1, 3) = .Cells(c.Row, 8)      'Bahnhof-Name
             ListBox1.List(lngAnzahl - 1, 4) = .Cells(c.Row, 3)      'Beschreibung-Eqipment
             ListBox1.List(lngAnzahl - 1, 5) = .Cells(c.Row, 74)    'Bemerkung
                
             Set c = rngBereich.FindNext(c)
             Loop While Not c Is Nothing And c.Address <> strFirst
        End If
    End With
    
    With ListBox1
    On Error Resume Next
   .SetFocus
   .ListIndex = 0
   End With
          Application.ScreenUpdating = True
          Label923 = ListBox1.ListCount
End Sub
Kann mir jemand dabei helfen und den Code evtl. diesbezüglich abändern?
Für Eure Bemühungen bedanke ich mich bereits im voraus
Gruß Andreas

Betrifft: AW: UserForm ListBox nach 2 Kriterien füllen
von: Nepumuk
Geschrieben am: 08.11.2020 15:26:08

Hallo Andreas,

teste mal:

Private Sub cmdSuchen_Team_Click()
    
    Dim c As Range
    Dim rngBereich As Range
    Dim lngAnzahl As Long
    Dim strFirst As String
    
    ListBox1.Clear
    
    With Worksheets("Erfassung_Bearbeitung")
        
        Set rngBereich = .Columns(8)
        
        Set c = rngBereich.Find(ComboBox51.Text, LookIn:=xlValues, LookAt:=xlWhole)
        
        If Not c Is Nothing Then
            
            strFirst = c.Address
            
            Do
                If .Cells(c.Row, 28).Value = ComboBox72.Text Then
                    
                    ListBox1.AddItem .Cells(c.Row, 1).Value
                    lngAnzahl = ListBox1.ListCount
                    ListBox1.List(lngAnzahl - 1, 1) = .Cells(c.Row, 1).Value 'ID
                    ListBox1.List(lngAnzahl - 1, 2) = .Cells(c.Row, 2).Value 'Equipment-Nummer
                    ListBox1.List(lngAnzahl - 1, 3) = .Cells(c.Row, 8).Value 'Bahnhof-Name
                    ListBox1.List(lngAnzahl - 1, 4) = .Cells(c.Row, 3).Value 'Beschreibung-Eqipment
                    ListBox1.List(lngAnzahl - 1, 5) = .Cells(c.Row, 74).Value 'Bemerkung
                    
                End If
                
                Set c = rngBereich.FindNext(c)
                
            Loop Until c.Address = strFirst
            
            Set c = Nothing
            
        End If
    End With
    
    With ListBox1
        If .ListCount > 0 Then .ListIndex = 0
        .SetFocus
    End With
    
    Label923.Caption = ListBox1.ListCount
    
End Sub

Gruß
Nepumuk

Betrifft: AW: UserForm ListBox nach 2 Kriterien füllen
von: Andreas
Geschrieben am: 08.11.2020 16:04:00

Hallo Nepumuk,

Super, mein Kopfzerbrechen hat ein Ende, vielen herzlichen Dank
funktioniert bestens

Dir noch ein schönes Wochenende
Gruß Andreas

Beiträge aus dem Excel-Forum zum Thema "UserForm ListBox nach 2 Kriterien füllen"