Filter in Userform
#1
Hey Leute,

ich fasse mich mal in 2 Posts. Ich habe eine Datei in der ich eine Userform eingefügt habe. Anbei zu sehen.


Das Problem was sich mir stellt ist, dass ich die Filter in der Userform nicht genau hin bekomme. Das heisst, wenn ich 2 Filter über die Checkbox aktivere, werden nicht diese 2 Daten in der Tabelle gefiltert. Die Filter mit den Checkboxen funktionieren nur alleine. Ich hoffe es ist klar was ich meine. Sonst einfach selber in die Datei gehen, die Userform mal starten und mit den Filter schauen wie diese sich verhalten. 

Btw: es geht um das Filter nach Bereich.


Angehängte Dateien
.xlsm   Forum.xlsm (Größe: 70,43 KB / Downloads: 11)
Top
#2
Hallöchen,

Du setzt Deine Filtereinstellungen einer Checkbox unabhängig von den anderen. Im Prinzip musst Du die Zustände der anderen verwenden:

Also nicht
.SlicerItems("BEE").Selected = False

sondern
.SlicerItems("BEE").Selected = CheckboxX.Value

Statt X dann die Nummer der Checkbox.

Wenn Du das so machst könntest Du übrigens auch das Aufheben einschl. If ...weglassen. Beim Filter mit = True nimmst Du die Checkbox, die das Ereignis auslöst

Also bei Checkbox2 nicht
.SlicerItems("BEA").Selected = True
sondern
.SlicerItems("BEA").Selected = CheckBox2.Value

Im Prinzip also so, ich hab die Nummern nicht geprüft Smile :

Code:
Private Sub CheckBox2_Click()
'FilternBEA Makro
  With ActiveWorkbook.SlicerCaches( _
      "Datenschnitt__Org_Unit_Reporting_Level_1_____Org_Einheit_Berichts_ebene_1")
      .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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • elamigo
Top
#3
Verzichte in VBA auf 'Select', 'Activate'

Keep it simple:


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
      If Me("Checkbox" & j) Then c00 = c00 & "|" & Me("Checkbox" & j).Caption
   Next
   
   Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7
   Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7, Split(Mid(c00, 2), "|"), 7
End Sub

Private Sub CommandButton3_Click()
   Tabelle1.ShowAllData
End Sub

Private Sub CommandButton1_Click()
  Tabelle1.ListObjects(1).DataBodyRange.Copy Sheets.Add(, Sheets(Sheets.Count)).Cells(1)
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • elamigo
Top
#4
(21.11.2018, 13:11)snb schrieb: Verzichte in VBA auf 'Select', 'Activate'

Keep it simple:


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
      If Me("Checkbox" & j) Then c00 = c00 & "|" & Me("Checkbox" & j).Caption
   Next
   
   Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7
   Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7, Split(Mid(c00, 2), "|"), 7
End Sub

Stark! Es funkioniert.
Kannst du mir bitte etwas näher erklären was du gemacht hast, da ich diesen Code gegebenenfalls erweitern oder anpassen muss. Bzw. einfach eine Erklärung zu dem "M_snb ()"
Top
#5
Kommando zurück, wenn ich den Filter wieder raus nehme nachdem er angeklickt war, kommt ein Fehler und der Debugger zeigt folgende Zeile an:
Code:
Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7, Split(Mid(c00, 2), "|"), 7
Top
#6
Code:
If c00<>"" Then Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7, Split(Mid(c00, 2), "|"), 7


Email in Excel: http://www.snb-vba.eu/VBA_Excelgegevens_...ml#L_2.3.2
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • elamigo
Top
#7
(21.11.2018, 15:25)snb schrieb:
Code:
If c00<>"" Then Tabelle1.ListObjects(1).DataBodyRange.AutoFilter 7, Split(Mid(c00, 2), "|"), 7


Email in Excel:  http://www.snb-vba.eu/VBA_Excelgegevens_...ml#L_2.3.2

Hey der neue Code geht sehr gut, nun, wenn ich diese Codes in meine richtige Datei übertrage filtert er irgendwie gar nichts mehr. Die wahre Tabelle geht von A-AH und M soll gefiltert werden. DANKE!
Top
#8
Hallöchen,

Du musst die Antwort nicht zitieren. Wenn Du einen bestimmten Antworter ansprechen willst, schreib einfach seinen Namen Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • elamigo
Top
#9
Erstelle eine 'Intelligente' Tabelle in deiner 'richtige' Datei.
Und versuche die Code zu verstehen. Das kann etwas dauern.
Eine Beispieldatei sollte immer ein ähnliche Struktur haben: Spalte M <> Spalte G
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • elamigo
Top
#10
Die Struktur ist mir zu 75% klar  Undecided 

Er aktualisiert auch die Spalten etc nur wenn ich eine Checkbox sozusagen deaktivere, wird der Filter nicht zurück gesetzt sonder die Auswahl bleibst bestehen.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste