Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filter erweitern um Wert aus Combobox

Filter erweitern um Wert aus Combobox
14.02.2022 06:18:02
Thomas
Hallo, aufbauen auf diesen Thread
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1861512
kann ich nach 2 Kriterien Filtern, Jahr (Combobox) und Offen/Erledigt über Optionsbutten so das dann die Textboxen entsprechen gefüllt werden.
Jetzt würde ich gerne aber auch noch Filtern nach Wochen (1 bis 53), also wenn in einer der Textboxen (TextBox17,TextBox18,TextBox19,TextBox20) (jede der Textboxen kann einen Wert zwischen 1 und 53 haben oder leer sein) einen Wert hat der der Auswahl der Wochen entspricht, sollen nur diese in der Listbox angezeigt werden, wenn in der Wochen auswahl nichts ausgewählt ist, dann sollen alle Werte angezeigt werden ohne Einschränkung auf die Woche. Die Werte der Textboxen kommen aus dem Tabellenblatt Spalte 16,18,20,22
Mir fehlt aber grade komplett die Ansatz idee wie ich da vorgehen könnte
https://www.herber.de/bbs/user/151112.xlsm

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filter erweitern um Wert aus Combobox
14.02.2022 07:39:33
ralf_b
Könnte so gehen. SpaltenNr der Listbox mußt du selber prüfen. kann um 1 versetzt sein.
Sollte man nicht auch noch abfragen ob du die zur Textbox zugehörige Checkbox aktivierst hast?

Sub listboxfilter()
Dim zeile As Long
Me.ListBox1.Clear
Me.ListBox1.List = ArrayData
With ListBox1
For zeile = .ListCount - 1 To 0 Step -1
If Not (.List(zeile, 2) Like Me.ComboBox12 & "*") Or .List(zeile, 41) = OptionButton2 Then
Select Case True
Case TextBox17.Value = .List(zeile, 16), _
TextBox18.Value = .List(zeile, 18), _
TextBox19.Value = .List(zeile, 20), _
TextBox20.Value = .List(zeile, 22)
Case Else
.RemoveItem (zeile)
End Select
End If
Next zeile
End With
If ComboBox12 = "" Then Me.ListBox1.Clear
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub

Anzeige
AW: Filter erweitern um Wert aus Combobox
15.02.2022 05:58:39
Thomas
Hallo,
damit wird mir immer alles angezeigt (also auch alle Jahre), da ist ja die keine Abfrage der Combobox für Wochen drin, müßte es nicht ungefähr so aussehen?

Case TextBox17.Value = cmbWoche.Value, _
TextBox18.Value = cmbWoche.Value, _
TextBox19.Value = cmbWoche.Value, _
TextBox20.Value = cmbWoche.Value
damit klappt dann der Jahresfilter auch wieder, allerdings der Wochen Filter wird ignoriert, es wird alles aus einem Jahr angezeigt, müßte das nicht auch eine ODER verknüpfung sein,

Wenn Textbox17 gleich der Combobox ist dann Zeigs an oder wenn Textbox18 gleich der Combox dann Zeigs an und soweiter
?
Hatte es jetzt mal so versucht, allerdings klappt da der Wochen filter auch nicht.

If Not (Me.ListBox1.List(zeile, 2) Like Me.ComboBox12 & "*") Or Me.ListBox1.List(zeile, 41) = OptionButton2 And cmbWoche = TextBox17.Value Or cmbWoche = TextBox18.Value Or cmbWoche = TextBox19.Value Or cmbWoche = TextBox20.Value Then
ListBox1.RemoveItem (zeile)
End If
Wenn ich das aber im Debug jetzt richtig verfolge ist das Problem die Prüfung auf die Textboxen, denn die Werden ja nicht durch die Comboboxen gefüllt, sondern durch das auswählen der Einträge in der Listbox, und wenn dann auf die Wochen geprüft wird sind die Textboxen ja noch leer....
Daher der versuch mal so, allerdings auch ohne erfolg.....

If Not (.List(zeile, 2) Like Me.ComboBox12 & "*") Or .List(zeile, 41) = OptionButton2 Then
Select Case True
Case cmbWoche.Value = .List(zeile, 16), _
cmbWoche.Value = .List(zeile, 18), _
cmbWoche.Value = .List(zeile, 20), _
cmbWoche.Value = .List(zeile, 22)
Case Else
.RemoveItem (zeile)

Anzeige
AW: Filter erweitern um Wert aus Combobox
15.02.2022 06:21:28
Thomas
Ich hab jetzt noch was rumprobiert, und jetzt funktioniert es zum teil, wobei ich nicht weiss wieso nur zum teil. In der Beispiel Mappe anbei am besten mal das Jahr 2020 auswählen und dann die Woche 16, dann müßten eigentlich 2 Einträge übrieg bleiben, wieso auch immer wird aber immer nur einer gefilter, bei Woche 14 müßte es eigentlich 4 Einträge geben, da wird aber gar nichts angezeigt......
Es dürfte mit den oder verknüpfungen zu tun haben, da nur wenn in der letzten Spalte der richtige Wert steht der Filter richtig gesetzt wird.
https://www.herber.de/bbs/user/151134.xlsm
Anzeige
AW: Filter erweitern um Wert aus Combobox
15.02.2022 06:41:42
ralf_b
Dein zweiter Vergleich war auch murks.
nun ein Versuch der Prüfung durch verketten der Texte auf einen entsprechenden Inhalt.

With ListBox1
For zeile = .ListCount - 1 To 0 Step -1
If (Not (.List(zeile, 2) Like Me.ComboBox12 & "*") Or .List(zeile, 41) = OptionButton2) Or _
(Not (.List(zeile, 15) & .List(zeile, 17) & .List(zeile, 19) & .List(zeile, 21) Like "*" & Me.cmbWoche & "*")) Then
.RemoveItem (zeile)
End If
Next zeile
End With

AW: Filter erweitern um Wert aus Combobox
16.02.2022 06:12:18
Thomas
Morgen,
bin heute morgen nur kurz zum Testen gekommen, auf den ersten Blick funktioniert es besser, allerdings wird mir wenn ich z.b. Woche 6 auswähle die in keiner der Zellen steht auch angezeigt wenn in einer der Zellen eine 16 steht, die Zellen sind als Zahl Formatiert, hab sie auch mal als Text Formatiert aber das Problem bleibt. Noch auffälliger ist es wenn ich die Woche 1 auswähle, dann wird alles angezeigt wo 11,12,13,14 usw. drin steht, aber nicht wenn die 1 hinten steht, also z.b. bei 21.....
Anzeige
AW: Filter erweitern um Wert aus Combobox
16.02.2022 07:25:00
ralf_b
und? was schlägst du vor?

Sub listboxfilter()
Dim zeile  As Long
Dim strText As String
With ListBox1
.Clear
.List = ArrayData
For zeile = .ListCount - 1 To 0 Step -1
If (Not (.List(zeile, 2) Like Me.ComboBox12 & "*") Or .List(zeile, 41) = OptionButton2) Then
.RemoveItem (zeile)
zeile = zeile - 1
End If
If cmbWoche  "" Then
strText = .List(zeile, 15) & "|" & .List(zeile, 17) & "|" & _
.List(zeile, 19) & "|" & .List(zeile, 21)
If InStr(1, strText, cmbWoche) > 1 Then .RemoveItem (zeile)
End If
Next zeile
If ComboBox12 = "" Then .Clear
If .ListCount > 0 Then .ListIndex = 0
End With
End Sub

Anzeige
AW: Filter erweitern um Wert aus Combobox
17.02.2022 06:11:31
Thomas
Das ich den Fehler suche und finde....
Hab es jetzt mit deinem neuen Code versucht, da scheint das größer Zeichen falsch zu sein, wenn ich das auf kleiner ändere, dann werden die richtigen Wochen angezeigt, wobei mir da nicht ganz klar ist wieso du auf 1 prüfst!?

If InStr(1, strText, cmbWoche) > 1 Then .RemoveItem (zeile)
Allerdings hat das auch immer noch den Effekt das wenn ich z.b. die Woche 1 Filtern will er auch die Wochen 11,12,13 usw. anzeigt oder aber auch wenn ich auf Woche 2 Filter, das dann auch die Woche 12 angezeigt wird.
Also muss ich noch ein bisschen suchen....
Anzeige
AW: Filter erweitern um Wert aus Combobox
17.02.2022 07:11:57
ralf_b
Ich glaub ich lass das lieber mit den Vorschlägen. Irgendwie scheint bei diesem Projekt bei mir der Wurm drin zu sein. Morgens zwischen Tür und Angel sich auf die Schnelle was ausdenken is scheinbar keine so gute Idee. Hab schon paar Mal den Sinn verkehrt herum gedacht. Ich mach das auch eigentlich anders mit der Listenfilterei. Hier entfernst du Listeneinträge. Ich filter die Daten normalerweise vorher und lade nur das Filterergebnis in die Liste. Sollte aber keine Rolle spielen.
Der Vergleich mit Like und den Wildcardzeichen war falsch, weil natürlich 1 auch in 11 und 2 in 20 oder 12 drin ist. Mit instr() leider genau das Selbe. Ich denke diese Variante würden funktionieren wenn du deine Wochenauswahl grundsätzlich zweistellig 01, 02 .....11, 12. bereitstellst. Sonst bleibt nur der 1:1 Vergleich der
4 Spalteneinträge.
Anzeige
AW: Filter erweitern um Wert aus Combobox
17.02.2022 20:33:09
Thomas
Hi,
nein bitte nicht lassen, auch wenn es nicht auf anhieb funktioniert hilft es mir was zu lernen, unteranderem was alles möglich ist. Und deine idee mit der zweistelligen Woche scheint genau richtig zu sein,ich hab die Woche jetzt mal zweistellig eingelesen über ein

Format(L, "00")
und die ersten Test sind sehr viel versprechend, werd das jetzt mal noch ein bisschen Testen in der hoffnung das es nicht doch noch einen Fehler gibt.
Danke dir auf jeden fall schonmal für deine Hilfe.
AW: Filter erweitern um Wert aus Combobox
17.02.2022 21:04:50
Thomas
Aber war ja klar das es dann noch nen neues Problem gibt, da die Daten in der Tabelle die unter 10 sind ohne führende null gespeichert sind, führt das natürlich jetzt dazu das de Filter auf die Zahlen unter 10 nicht mehr filtert, wäre ja auch zu einfach gewesen :-) Naja werd mal prüfen ob ich die zahlen nicht auch mit führender Null speichern kann.....
Anzeige
AW: Filter erweitern um Wert aus Combobox
17.02.2022 21:25:49
ralf_b
geht auch anders herum if combobox = Format(.list(index,16),"00")
AW: Filter erweitern um Wert aus Combobox
17.02.2022 21:33:04
Thomas
Habs andersrum gelassen und die vergleiche umgewandelt, bis jetzt scheint es zu funktionieren

If cmbWoche  "" Then
strText = Format(.List(zeile, 15), "00") & "|" & Format(.List(zeile, 17), "00") & "|" & _
Format(.List(zeile, 19), "00") & "|" & Format(.List(zeile, 21), "00") & "|" & Format(.List(zeile, 23), "00") & "|" & Format(.List(zeile, 25), "00")

AW: Filter erweitern um Wert aus Combobox
18.02.2022 22:06:34
Thomas
Hallo,
hab es jetzt in verschiedenen Situation getestet und es scheint alles wie gewollt zu funktionieren, dafür vielen Dank.
Jetzt habe ich noch einen Filter eingebaut, der scheint bis jetzt auch zu funktionieren, allerdings hab ich den eindruck das es "besser" ginge, würde mich über vorschläge freuen

For zeile = Me.libsprachen.ListCount - 1 To 0 Step -1
If Not cmdVerguetung = "" Then
If cmdVerguetung = "Vergütung" And Not libsprachen.List(zeile, 38) > 0 Then
libsprachen.RemoveItem (zeile)
End If
End If
Next zeile
For zeile = Me.libsprachen.ListCount - 1 To 0 Step -1
If Not cmdVerguetung = "" Then
If cmdVerguetung = "Abnahme" And Not libsprachen.List(zeile, 37) > 0 Then
libsprachen.RemoveItem (zeile)
End If
End If
Next zeile
For zeile = Me.libsprachen.ListCount - 1 To 0 Step -1
If Not cmdVerguetung = "" Then
If cmdVerguetung = "Test" And Not libsprachen.List(zeile, 6) > 0 Then
libsprachen.RemoveItem (zeile)
End If
End If
Next zeile

Anzeige
AW: Filter erweitern um Wert aus Combobox
18.02.2022 22:21:24
ralf_b

With Me.libsprachen
For zeile = .ListCount - 1 To 0 Step -1
If (cmdVerguetung = "Vergütung" And .List(zeile, 38) = 0) Or _
(cmdVerguetung = "Abnahme" And .List(zeile, 37) = 0) Or _
(cmdVerguetung = "Test" And .List(zeile, 6) = 0) Then
.RemoveItem (zeile)
End If
Next zeile
End With

AW: Filter erweitern um Wert aus Combobox
19.02.2022 20:21:00
Thomas
Funktioniert super, vielen Dank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige