Anzeige
Archiv - Navigation
1716to1720
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

Suche in Tabelle über UF

Suche in Tabelle über UF
11.10.2019 18:46:01
Markus
Hallo Zusammen,
ich habe hier im Forum schon einmal Hilfe bei folgendem Code bekommen. Dieser Code erlaubt mir nach unterschiedlichen Projekten (z.B. sortiert nach Kunde, oder Projektnummern, od...) zu filtern. Diesen möchte ich nun entsprechend erweitern, was wohl auch möglich ist. In Spalte 25 meiner Tabelle steht das Datum an dem ein Projekt abgeschlossen ist oder noch nicht (Zeile Leer dann noch offen).
Ich möchte über zwei Optionbuttons nun filtern nach "offen" oder "abgeschlossen".
Klar muss ich in der UF dann 25 TextBoxen haben. Aber wie passe ich den Code an das er in Spalte 25 nach leer oder gefüllt sucht?
Vielen Dank im voraus!
Gruß Markus
P.S. der Code ist alt txt-Datei angehängt
https://www.herber.de/bbs/user/132487.txt

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche in Tabelle über UF
11.10.2019 19:48:09
Nepumuk
Hallo Markus,
soll ich jetzt deine Tabelle und das Userform anhand der Textdatei nachbauen? Lade bitte eine Beispielmappe hoch.
Gruß
Nepumuk
AW: Suche in Tabelle über UF
11.10.2019 22:40:05
Matthias
Moin!
Ohne das jetzt getestet zu haben, hier mal eine Anpassung. Den Namen der Optionbuttons musst du ggf. noch anpassen. Habe da nur OP1 und OP2 genommen. Die (vermtl.) TB25 kann ja jetzt leer sein. Deshalb ist an manchen Stellen im Code noch was ergänzt worden.
Dim quelle As Object
Dim daten
Dim zeile As Long, ende As Long, spalte As Long, eintrag As Long
Dim wert
Dim kriterien
Dim eintragen As Boolean
Dim anzahl As Long 'anzahl der Listboxen
Set quelle = Worksheets("Projekte")
Set kriterien = CreateObject("Scripting.Dictionary")
anzahl = 25
With Projektsuche
'Listbox leeren
.ListBox1.Clear
.ListBox1.ColumnCount = anzahl 'Listbox bekommt 4 Spalten (kannst du auch ?ber die _
Einstellungen einstellen)
ende = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(ende, anzahl))
For spalte = 1 To anzahl
If .Controls("Textbox" & spalte)  "" Or spalte = anzahl Then
kriterien.Add spalte, .Controls("Textbox" & spalte).Value
End If
Next
If kriterien.Count = 0 Then Exit Sub
For zeile = 1 To ende
eintragen = True
For eintrag = 1 To kriterien.Count
If kriterien.keys()(eintrag - 1)  "") Or _
(Me.Controls("Optionsbutton2").Value = True And wert = "") Then
eingetragen = False
Exit For
End If
End If
If InStr(1, wert, kriterien.items()(eintrag - 1), vbTextCompare) = 0 Or kriterien. _
items()(eintrag - 1) = "" Then
eintragen = False
Exit For
End If
Next
If eintragen = True Then
.ListBox1.AddItem
For i = 1 To anzahl
.ListBox1.List(.ListBox1.ListCount - 1, i - 1) = daten(zeile, i)
Next
End If
Next
End With

VG
Anzeige
AW: Suche in Tabelle über UF
14.10.2019 06:11:49
Markus
Hallo Matthias,
danke für deinen Code.
Ich habe diesen mal bei mir so angepasst, leider liefert dieser eine Fehlermeldung. Anbei die Beispieldatei. Evtl. kannst Du mir ja sagen woran es hängt.
https://www.herber.de/bbs/user/132513.xlsm
Gruß Markus
AW: Suche in Tabelle über UF
14.10.2019 21:31:39
Matthias
Moin!
Geht erst am Mittwoch. Würde dann mal schauen.
VG
AW: Suche in Tabelle über UF
16.10.2019 19:20:49
Matthias
Moin!
So habe mal geschaut. Gibt da mehrere Baustellen. Hier mal ein lauffähiger Code.
Private Sub CommandButton1_Click()
TextBox6 = ComboBox1
TextBox7 = ComboBox2
Dim quelle As Object
Dim daten, ergebnis
Dim zeile As Long, ende As Long, spalte As Long, eintrag As Long, anzerg As Long
Dim wert, wert2
Dim kriterien
Dim eintragen As Boolean
Dim anzahl As Long 'anzahl der Listboxen
Set quelle = Worksheets("Projekte")
Set kriterien = CreateObject("Scripting.Dictionary")
anzahl = 25
With Projektsuche
'Listbox leeren
.ListBox1.Clear
.ListBox1.ColumnCount = anzahl + 1 'Listbox bekommt 4 Spalten (kannst du auch ?ber die _
Einstellungen einstellen)
ende = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
ReDim ergebnis(ende, anzahl)
daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(ende, anzahl))
For spalte = 1 To anzahl
If .Controls("Textbox" & spalte)  "" Or spalte = anzahl Then
kriterien.Add spalte, .Controls("Textbox" & spalte).Value
End If
Next
If kriterien.Count = 1 And _
Me.Controls("OptionButton1") = False And _
Me.Controls("OptionButton1") = False Then Exit Sub
For zeile = 3 To ende   'suche startet erst in Zeile 3
eintragen = True
For eintrag = 1 To kriterien.Count
If kriterien.keys()(eintrag - 1)  "") Or _
(Projektsuche.Controls("OptionButton2").Value = True And wert2 = "") Then
eingetragen = False
Exit For
End If
End If
If InStr(1, wert, kriterien.items()(eintrag - 1), vbTextCompare) = 0 Or kriterien.  _
_
items()(eintrag - 1) = "" Then
eintragen = False
Exit For
End If
Next
If eintragen = True Then
anzerg = anzerg + 1
For i = 1 To anzahl
ergebnis(anzerg, i) = daten(zeile, i)
Next
End If
Next
.ListBox1.List = ergebnis
End With
End Sub

Der hat aber ein paar Macken. In der Listbox sind genau soviel Zeilen, wie Einträge in der Tabelle. Das Problem ist / war, dass man mit der additem Methode nur 10 Spalten einer LIstbox befüllen kann. Im Code wolltest du aber 25. Das geht so nicht. Habe deshalb ein Array gebastelt und übergebe das. Wegen der Dimenisonierung habe ich mal die Zeilenanzahl genommen (ist ja das Maximum). Mann kann die Leerzeilen noch weg machen. Da müsste man aber wissen, ob das NOt tut. Wenn du nicht alls Spalten brauchst, könnte man sonst auch additem nutzen. Da er mit die letzte Spalte auch nicht angezeigt hat, hat das zu übergebende Array 26 Spalten da nicht wundern. Deshalb habe ich auch die ColumnCOunt um 1 erhöht.
Was habe ich geändert.
- Im Vergleich der Optionbutton habe ich einen wert2 drin. Der gibt den Inhat der Zelle an.
- Die Suche beginnt erst ab Zeile 3. Falls du am Tabellenkopf was änderst, dort bitte anpassen, sonst könnte ggf eine Zeile fehlen.
- beachte die Anmerkungen zu ColumnCount am Anfang
Mehr fällt mir grad nicht ein.
Also bitte mal schauen, ob du wirklich 25 Spalten brauchst. Wenn Fragen sind, einfach stellen.
VG
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige