Clever-Excel-Forum

Normale Version: Filter in Userform
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Dann solltest du die Code anpassen die Autofilter ausschaltet. z.B
Code:
sheet1.showalldata
Habe ich schon leider funktioniert es nicht. Der code ist genau der gleiche wie Sie mir geschickt haben. Der Code den ich nutze sieht wie folgt aus: 
Code:
Private Sub CheckBox1_Change()
   M_snb
End Sub

Private Sub CheckBox2_Change()
   M_snb
End Sub

Private Sub CheckBox3_Change()
 M_snb
End Sub

Private Sub CheckBox4_Change()
  M_snb
End Sub

Private Sub CheckBox5_Change()
 M_snb
End Sub

Sub M_snb()
  For j = 1 To 5 'Anzahl der Checkboxen und Filteroptionen, eine Zeile tiefer
 
     If Me("Checkbox" & j) Then c00 = c00 & "|" & Me("Checkbox" & j).Caption
  Next
 
  Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7
  If c00 <> "" Then Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 13, Split(Mid(c00, 2), "|"), 7
End Sub
Private Sub CommandButton3_Click()
Tabelle1.ShowAllData
End Sub

Allerdings bleibt das Problem, das der Filter beim abwählen des Kästchen nicht zurückgesetzt wird. :(
Dus hast nur eine Codezeile angepast.
Hallo elamigo,

warum ignorierst Du den (richtigen) Vorschlag von André aus #2 ?
Du hast Dich zwar bedankt, aber dann kam nichts mehr dazu.

Gruß Uwe
@snb, danke schon mal, aber welche Zeile muss ich noch anpassen, damit der Filter sich beim abwählen zurücksetzt?

@Kuwer ich habe diese Variante versucht der Code sieht so aus
Code:
Private Sub CheckBox1_Click()
'FilternBEA Makro
 With ActiveWorkbook.SlicerCaches( _
     "Datenschnitt_Spalte12")
     .SlicerItems("BEE").Selected = CheckBox1.Value
     .SlicerItems("BEA").Selected = CheckBox2.Value
     .SlicerItems("BGS").Selected = CheckBox3.Value
     .SlicerItems("BPP").Selected = CheckBox4.Value
     .SlicerItems("BTT").Selected = CheckBox5.Value
 End With
End Sub
Private Sub CheckBox2_Click()
'FilternBEA Makro
 With ActiveWorkbook.SlicerCaches( _
     "Datenschnitt_Spalte12")
     .SlicerItems("BEE").Selected = CheckBox1.Value
     .SlicerItems("BEA").Selected = CheckBox2.Value
     .SlicerItems("BGS").Selected = CheckBox3.Value
     .SlicerItems("BPP").Selected = CheckBox4.Value
     .SlicerItems("BTT").Selected = CheckBox5.Value
 End With
End Sub
Private Sub CheckBox3_Click()
'FilternBEA Makro
 With ActiveWorkbook.SlicerCaches( _
     "Datenschnitt_Spalte12")
     .SlicerItems("BEE").Selected = CheckBox1.Value
     .SlicerItems("BEA").Selected = CheckBox2.Value
     .SlicerItems("BGS").Selected = CheckBox3.Value
     .SlicerItems("BPP").Selected = CheckBox4.Value
     .SlicerItems("BTT").Selected = CheckBox5.Value
 End With
End Sub
Private Sub CheckBox4_Click()
'FilternBEA Makro
 With ActiveWorkbook.SlicerCaches( _
     "Datenschnitt_Spalte12")
     .SlicerItems("BEE").Selected = CheckBox1.Value
     .SlicerItems("BEA").Selected = CheckBox2.Value
     .SlicerItems("BGS").Selected = CheckBox3.Value
     .SlicerItems("BPP").Selected = CheckBox4.Value
     .SlicerItems("BTT").Selected = CheckBox5.Value
 End With
End Sub
Private Sub CheckBox5_Click()
'FilternBEA Makro
 With ActiveWorkbook.SlicerCaches( _
     "Datenschnitt_Spalte12")
     .SlicerItems("BEE").Selected = CheckBox1.Value
     .SlicerItems("BEA").Selected = CheckBox2.Value
     .SlicerItems("BGS").Selected = CheckBox3.Value
     .SlicerItems("BPP").Selected = CheckBox4.Value
     .SlicerItems("BTT").Selected = CheckBox5.Value
 End With
End Sub

allerdings will der nicht zu 100%, selbe Problem beim abwählen der checkbox. Anbei die Datei mit dem Code. Sollte auf keinen Fall negativ rüber kommen oder abwertend gegenüber Andre aus #2 Sleepy
Code:
Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7

ändere in

Code:
Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 13
Hallöchen,

oder so. Beim Aufruf des Programms rufe ich noch den Filterstatus ab und setze die Checkboxen entsprechend. Damit dadurch nicht der Click-Code beim Setzen erneut filtert, habe ich per Tag mitgeteilt, dass gerade was anderes läuft Smile
Den Filtercode hab ich zwecks Optimierung ausgelagert.

Code:
Private Sub UserForm_Activate()
SetCheck
End Sub
Private Sub CheckBox1_Click()
If Me.Tag = "" Then Filtern
End Sub
Private Sub CheckBox2_Click()
If Me.Tag = "" Then Filtern
End Sub
Private Sub CheckBox3_Click()
If Me.Tag = "" Then Filtern
End Sub
Private Sub CheckBox4_Click()
If Me.Tag = "" Then Filtern
End Sub
Private Sub CheckBox5_Click()
If Me.Tag = "" Then Filtern
End Sub
Sub Filtern()
'FilternBEA Makro
  With ActiveWorkbook.SlicerCaches( _
      "Datenschnitt_Spalte12")
      .SlicerItems("BEE").Selected = CheckBox1.Value
      .SlicerItems("BEA").Selected = CheckBox2.Value
      .SlicerItems("BGS").Selected = CheckBox3.Value
      .SlicerItems("BPP").Selected = CheckBox4.Value
      .SlicerItems("BTT").Selected = CheckBox5.Value
  End With
End Sub
Sub SetCheck()
'FilternBEA Makro
Me.Tag = "!"
  With ActiveWorkbook.SlicerCaches( _
      "Datenschnitt_Spalte12")
      CheckBox1.Value = .SlicerItems("BEE").Selected
      CheckBox2.Value = .SlicerItems("BEA").Selected
      CheckBox3.Value = .SlicerItems("BGS").Selected
      CheckBox4.Value = .SlicerItems("BPP").Selected
      CheckBox5.Value = .SlicerItems("BTT").Selected
  End With
Me.Tag = ""
End Sub
Nun mit Klasse:
Nun mit Klasse:
Alles klar danke euch beiden es funkioniert!
Seiten: 1 2