Clever-Excel-Forum

Normale Version: Filtereistellung mit IfThenElse
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Excel Forum !

Wende mich nochmal an euch, habe ein Problem mit dem Filtern in
einer Listbox.
Versuche mit IF (Wenn in einem Textfeld in der Listbox nix steht) THEN
(Lade normal in die Listbox ein) was Funktioniert
ELSE
(Filter nach Eingabe Textfeld) Funktioniert nicht
ENDIF

In der Quelltabelle wird der Filter Angewendet, nur nicht in der Listbox.

Hab mir unendlich viele TUTs angesehen über IfThenElse, Case, Schleifen, u.s.w.
mir Qualmt der Kopf, aber anwenden konnte ich nichts.

werde eine Beispieldatei anhängen.

LG Gerhard
Hallöchen,

filtere die Daten im Blatt mit Spezialfilter an eine andere Stelle und nimm diesen Bereich als Datenquelle für die Listbox.
Alternativ fülle die Listbox mit den gefilterten Daten und nimm nicht RowSource.
Hallo Schauan
Anstelle von Rowsource, gibt es denn eine Alternative ?

LG
Hallöchen,

ja, auch mit VBA Smile Hier mal ein Ansatz.
Die letzte Zeile habe ich anhand Spalte A festgestellt. Da sollte in dieser Spalte dann auch unter der Tabelle nix mehr stehen, ansonsten nimmst Du eine andere. Falls Du Deinen ersten Teil mit der RowSource lassen willst, dann müsstest Du in diesem Teil noch selbige auf = "" setzen.

Kannst aber eventuell auch generell diesen Code nehmen und weitere Bedingung wie mit dem nix dazu schreiben.
Im Prinzip If Rows(lCnt).EntireRow.Hidden = False And Zelle = Nix And Irgendwo = Irgendwas Smile Then ...
 
Code:
Private Sub UserForm_Initialize()
'Variablendeklarationen Long
Dim lRow&, lCnt&, lLastRow&
'mit dem aktiven Blatt
With ActiveSheet
 'Anzahl Spalten festlegen
 ListBox1.ColumnCount = 3
 'lLastRow lRow feststellen
 lLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
 'Zeilenzahler fuer Listbox auf 0 setzen
 lRow = 0
 'Schleife ueber alle Tabellenzeilen
 For lCnt = 1 To lLastRow
   'Wenn die Tabellenzeile nicht ausgeblendet ist, dann
   If Rows(lCnt).EntireRow.Hidden = False Then
     'Tabeleneintraege uebernehmen
     ListBox1.AddItem .Cells(lCnt, 1)
     ListBox1.List(lRow, 1) = .Cells(lCnt, 2)
     ListBox1.List(lRow, 2) = .Cells(lCnt, 3)
     lRow = lRow + 1
   'Ende Wenn die Tabellenzeile nicht ausgeblendet ist, dann
   End If
 'Ende Schleife ueber alle Tabellenzeilen
 Next
End With
End Sub
Danke erstmal !
Werd mich gleich damit befassen, und Versuchen es umzusetzen.

LG
Hallo Clever Excel Forum !

Melde mich erst jetzt wieder, da ich eine gefühlte Ewigkeit
versucht habe die Tipps umzusetzen.
Da ich jetzt auch ohne "RowSource" Arbeite, funktionieren einige
Sachen nicht mehr die vorher funktioniert haben.

Aber Irgendwie hinbekommen habe ich:

- Gefiltertes einlesen in die Listbox Funktioniert.
- Neuer Datensatz aus der Listbox in die Tabelle eintragen
funktiniert (Nur die Inteligente Tabelle macht ab und an
probleme, da die Formeln nicht übernommen werden)
- Sortieren und Filter rausnehmen bei Beenden Der Userform
Funftioniert.
- Combobox zur Auswahl des Filterkriteriums, mit verschiedenen
Daten"Tabellenblattabhänig"füllen Funktioniert.

Wo ich aber dran scheitere, das löschen eines Markierten Datensatz
in der Listbox.
Wenn da nochmal jemand Helfen würde, wäre Klasse.
Eine Bspl. Datei hänge ich an.
lg Gerhard
Hallo Gerhard,

da hilft meist auch die Überwachungsfunktion.
lbxDaten.List(lbxDaten.ListIndex)
bringt Dir laut Überwachung "2" --> das ist ein String.
In der Zelle steht die Zahl 2


Da das für Excel nicht dasselbe ist, kommt es nicht zum Löschen. Du könntest es z.B. mit

lbxDaten.List(lbxDaten.ListIndex) * 1

versuchen.
Funktioniert, Wäre ich so nie draufgekommen.....
Herzlichen Dank.