SpezialFilter mit KomboBoxWerten
Knatterkopf
hab da ein ein kleines Wissenproblem.
Finde in keinem Beispiel wie das "Spezial"-Filterkriterium aus kombiBox-Inhalten zugewiesen wird.
Sprich ich befülle 2 Kombiboxen so:
Private Sub Worksheet_Activate()
Dim varPhase As Variant, varRolle As Variant
With DropdownBauphase
.Clear
varPhase = Array("BBG", "EBG", "PVL")
.List = varPhase
End With
With DropdownRolle
.Clear
varRolle = Array("AA", "AB", "AC", "AD", "AE", "AF", "AG", "AK", "AL")
.List = varRolle
End With
With TextBox1
.Value = Format(Date, "dd.mm.yyyy")
.Font.Size = 16
.TextAlign = fmTextAlignCenter
End With
WeekBefore.List = Array("1", "2", "3", "4", "5")
WeekAfter.List = Array("1", "2", "3", "4", "5")
End Sub
Dann möchte ich eine Liste (Range) nach diesen Boxwerten Filtern. In welcher Art und weise gefiltert werden soll, ist hoffentlich aus dem code in den If anweisungen ersichtlich.
Problem ist nur, dass ich kaum Ahnung vom Code der Spezialfilter habe und es noch nicht so ganz verstehe. Liegt wohl an der Zeile wo das FilterCrit gesetzt wird.
Dem wird normalerweise eine Range zugewiesen das dann im einzelnen so definiert wird:
FilterCrit(2, 1).FormulaR1C1
Zeile 2, Spalte 1 aus der CritRange und das Formula Row1Col1 verstehe ich absolut nicht.
Fakt ist, dass ich aus den Komboboxen die CritRange bestimmen möchte und sehr glücklich wäre, wenn mir das jmd. ausführlich erklären könnte =)
Private Sub FilterButton_Click()
Dim rngBereich As Range, FilterCrit As Range, iCalc As Integer, bootExit As Boolean
With Application
iCalc = .Calculation
.ScreenUpdating = False
.Calculation = xlCalculationManual
With Tabelle1
If .FilterMode Then .ShowAllData
.Cells.EntireRow.Hidden = False
Set rngBereich = .Range("A5", .Cells(.Rows.Count, 6).End(xlUp))
End With
With rngBereich
Set FilterCrit = .Cells(1, .Columns.Count).Resize(2, 1) 'Hier ist noch ein Wurm drin und warum .Resize(2,1)
With Tabelle1
If DropdownBauphase.Value = "" And DropdownRolle = "" Then
bootExit = True
ElseIf DropdownRolle.Value = "" Then FilterCrit(2, 1).FormulaR1C1 = "=RC2=DropdownBauphase.value"
ElseIf DropdownBauphase.Value = "" Then
FilterCrit(2, 1).FormulaR1C1 = "= OR(RC3=DropdownRolle.value, RC4=DropdownRolle.value, RC6=DropdownRolle.value)"
Else
FilterCrit(2, 1).FormulaR1C1 = "= AND(RC2=DropdownBauphase.value, OR(RC3=DropdownRolle.value, RC4=DropdownRolle.value, RC6=DropdownRolle.value))"
End If
End With
If Not booExit Then
.AdvancedFilter xlFilterInPlace, FilterCrit
FilterCrit(2, 1).ClearContents
End If
End With
.Calculation = iCalc
.ScreenUpdating = True
End With
End Sub
Vielen Dank und VG
Adrian