Ich brauche nochmal eure Hilfe.
Ich habe eine Tabelle, deren Spalten über VBA mittels mehrerer Comboboxen gefiltert werden sollen, eine Combobox pro Spalte, absolut kein Hexenwerk.
Jetzt verschiebt sich aber der manuell ausgewählte Combobox-Wert während der VBA-Berechnung und springt in der Liste eins nach oben, sodass falsch gefiltert wird. Das passiert nur mit dem zweiten Wert, die erste Combobox wird korrekt gefiltert. Die Datei findet ihr hier: https://www.herber.de/bbs/user/139086.xlsm
Könnt ihr euch das bitte mal anschauen? Fällt euch eine Lösung ein? Möchte eigentlich nicht die Filterung aufstückeln und nach jedem Combobox-Change einzeln filtern (das bringt dann wieder Probleme mit sich, dass beim Rücksetzen der Combobox das Filtermakro ausgeführt wird etc..).
Beispiel in "Geometrie Kopf" "Quadratisch" eingeben und in "Farbe" "weiß" springt der Fabwert auf "V2A", anscheinend weil das in der Combobox-liste darüber steht.
Die Ausgabe der Comboboxwerte auf die sich der Filter bezieht ist in Z97 (hatte eigentlich direkt dauf die Combobox.value bezogen, aber zum debugging ausgelagert - selbes Problem).
Z99-Z115 ist die duplikat-bereinigte Comboboxliste und darunter die zu filternde Haupttabelle.
Die Fragmente oben bitte ignorieren, der Code ist nur ein Ausschnitt.
Public objname As String
Public auswahl As String
Private Sub Workbook_open()
'---------- Anzahl Zeilen Combobox anpassen ----------
ComboBox1.ListRows = Range("E98").Value
ComboBox2.ListRows = Range("G98").Value
ComboBox3.ListRows = Range("I98").Value
ComboBox4.ListRows = Range("K98").Value
ComboBox5.ListRows = Range("N98").Value
ComboBox6.ListRows = Range("O98").Value
End Sub
'////////////////////////////////////////////////////////////////////////// Katalog aufbauen /// _
Public Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim h As Integer
Dim oPic As Object
Dim rngZelle As Range
'Application.ScreenUpdating = False
'---------- Tabelle filtern -----------------
If TextBox2.Value "" Then
Range("D117:AA318").AutoFilter Field:=16, Criteria1:=TextBox2.Value
Else
If TextBox3.Value "" Then
Range("D117:AA318").AutoFilter Field:=17, Criteria1:="=*" & TextBox3.Value & "*"
Else
If Cells(97, 5).Value "" Then
MsgBox ComboBox1.Value
Range("D117:AA318").AutoFilter Field:=2, Criteria1:=Cells(97, 5).Value
End If
If Cells(97, 7).Value "" Then
MsgBox ComboBox2.Value
Range("D117:AA318").AutoFilter Field:=4, Criteria1:=Cells(97, 7).Value
End If
If Cells(97, 9).Value "" Then
MsgBox ComboBox3.Value
Range("D117:AA318").AutoFilter Field:=6, Criteria1:=Cells(97, 9).Value
End If
If Cells(97, 11).Value "" Then
Range("D117:AA318").AutoFilter Field:=8, Criteria1:=Cells(97, 11).Value
End If
If ComboBox5.Value "" Then
Range("D117:AA318").AutoFilter Field:=10, Criteria1:=Cells(97, 13).Value
End If
If ComboBox6.Value "" Then
Range("D117:AA318").AutoFilter Field:=12, Criteria1:=Cells(97, 15).Value
End If
End If
End If
End Sub