Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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
VBA Suche mit ListBox und ComboBox
03.01.2023 09:15:07
Pirmin
Guten Morgen zusammen,
ich habe folgendes vor:
Ich habe in meinem Tabellenblatt "NUMMERN" alle möglichen Kombinationen inkl. einer eindeutig Nummer.
Die Datei soll für andere als Grundlage zur Suche der eindeutigen Nummer dienen.
Das Ganze soll über eine Userform mit Listbox und ComboBox ausgegeben werden.
Anfangs habe ich es mit der FILTER Funktion und dem Autofilter versucht, ohne zufrieden stellendes Ergebnis.
In VBA hab ich keinerlei Erfahrung und habe mich bisher mit Youtube Tutorials und Foren Einträgen über Wasser gehalten, hier bin ich aber nun an meine Grenzen gestoßen.
Was muss der Code können:
Wir haben eine ListBox und 9 ComboBoxen
Die ComboBoxen werden mit Werten aus dem Blatt DATEN definiert (Das funktioniert auch schon).
In der ListBox sollen je nach Auswahl in den ComboBoxen alle möglichen Werte der zugehörigen Spalte ausgegeben werden.
Steht in den ComboBoxen ein bestimmter Wert (Die Überschrift der Spalten A:I im Blatt NUMMERN), sollen alle Inhalte der jeweiligen Spalte wiedergegeben werden.
Ganz am Ende sollen die Nummern über einen Hyperlink eine .pdf Datei auf einer Festplatte öffnen.
Aktuell ist mein Problem, dass ich jede ComboBox die Werte der anderen überschreibt oder ignoriert und dass wenn ich eine der Überschriften aus dem Tabellenblatt NUMMERN auswähle nichts angezeigt wird (ich habe mich bisher nur um die ertse ComboBox gekekümmert, was diesen Punkt angeht)
https://www.herber.de/bbs/user/157057.xlsm
Hier ist mein bisheriger Code

Private Sub Lufter_Change()
Dim zeile As Long
'Listbox leeren
Me.ListBox1.Clear
'Schleife über alle Zeilen der Tabelle
For zeile = 2 To Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row
If InStr(1, LCase(Tabelle2.Cells(zeile, 3).Value), LCase(Anzahl_Abzug.Value))  0 Then
'ListBox befüllen
Me.ListBox1.AddItem Tabelle2.Cells(zeile, 1).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Tabelle2.Cells(zeile, 2).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Tabelle2.Cells(zeile, 3).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Tabelle2.Cells(zeile, 4).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Tabelle2.Cells(zeile, 5).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Tabelle2.Cells(zeile, 6).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Tabelle2.Cells(zeile, 7).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Tabelle2.Cells(zeile, 8).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Tabelle2.Cells(zeile, 9).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = Tabelle2.Cells(zeile, 10).Value
End If
Next zeile
End Sub
Private Sub Anzahl_Abzug_Change()
Dim zeile As Long
'Listbox leeren
Me.ListBox1.Clear
'Schleife über alle Zeilen der Tabelle
For zeile = 2 To Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row
If InStr(1, LCase(Tabelle2.Cells(zeile, 2).Value), LCase(Anzahl_Abzug.Value))  0 Then
'ListBox befüllen
Me.ListBox1.AddItem Tabelle2.Cells(zeile, 1).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Tabelle2.Cells(zeile, 2).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Tabelle2.Cells(zeile, 3).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Tabelle2.Cells(zeile, 4).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Tabelle2.Cells(zeile, 5).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Tabelle2.Cells(zeile, 6).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Tabelle2.Cells(zeile, 7).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Tabelle2.Cells(zeile, 8).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Tabelle2.Cells(zeile, 9).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = Tabelle2.Cells(zeile, 10).Value
End If
Next zeile
End Sub
Private Sub System_Change()
Dim zeile As Long
'Listbox leeren
Me.ListBox1.Clear
'Schleife über alle Zeilen der Tabelle
For zeile = 2 To Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row
If InStr(1, LCase(Tabelle2.Cells(zeile, 1).Value), LCase(System.Value))  0 Then
'ListBox befüllen
Me.ListBox1.AddItem Tabelle2.Cells(zeile, 1).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Tabelle2.Cells(zeile, 2).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Tabelle2.Cells(zeile, 3).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Tabelle2.Cells(zeile, 4).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Tabelle2.Cells(zeile, 5).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Tabelle2.Cells(zeile, 6).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Tabelle2.Cells(zeile, 7).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Tabelle2.Cells(zeile, 8).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Tabelle2.Cells(zeile, 9).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = Tabelle2.Cells(zeile, 10).Value
End If
'Bei Wert System alle Werte Anzeigen
If InStr(1, Tabelle2.Cells(zeile, 1), "System")  0 Then
Me.ListBox1.AddItem Tabelle2.Cells(zeile, 1).Value
End If
Next zeile
End Sub
Private Sub UserForm_Initialize()
Dim zeile As Long
'Schleife über alle Zeilen der Tabelle
For zeile = 2 To Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row
'ListBox befüllen
Me.ListBox1.AddItem Tabelle2.Cells(zeile, 1).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Tabelle2.Cells(zeile, 2).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Tabelle2.Cells(zeile, 3).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Tabelle2.Cells(zeile, 4).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Tabelle2.Cells(zeile, 5).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Tabelle2.Cells(zeile, 6).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Tabelle2.Cells(zeile, 7).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Tabelle2.Cells(zeile, 8).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Tabelle2.Cells(zeile, 9).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = Tabelle2.Cells(zeile, 10).Value
Next zeile
'Erstes Element auswählen
Me.ListBox1.Selected(0) = True
End Sub
Vielen Dank für eure Hilfe und eueren Input

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Suche mit ListBox und ComboBox
03.01.2023 10:06:53
ralf_b
Du mußt bei jeder Änderung der Filtercontrols die Listbox mit allen Controlwerten filtern, sofern diese gesetzt sind.
Aktuell filterst du nur nach einem Wert jeweils. das überschreibt die evtl bestehende Filterung nach einem andern gesetzten Wert.
du benötigst nur eine Filteroutine, die du bei jeder Änderung eines Filtercontrols aufrufst.
AW: VBA Suche mit ListBox und ComboBox
03.01.2023 10:43:22
Pirmin
Hallo Ralf,
das klingt schlüssig.
Heißt für den Code, dass ich mehre If Then Schleifen schreiben muss oder?
Quasi so
If Filter gesetzt then...
If not Filter gesetzt then ... ?
AW: VBA Suche mit ListBox und ComboBox
03.01.2023 10:29:48
Herbert_Grom
Hallo Pirmin,
in "DATEN" hast du die Spalten a&B als "Tabelle1" formatiert. Kann es sein, dass das eigentlich 2 verschiedene Tabellen sein sollten?
Servus
Anzeige
AW: VBA Suche mit ListBox und ComboBox
03.01.2023 10:40:06
Pirmin
Servus Herbert,
du hast recht, das war ein Formatierungsfehler, danke für den Hinweis
AW: VBA Suche mit ListBox und ComboBox
04.01.2023 10:34:27
Herbert_Grom
Warum machst du das eigentlich nicht mit dem Autofilter?
AW: VBA Suche mit ListBox und ComboBox
04.01.2023 17:11:25
Herbert_Grom
Sehe ich das richtig, dass du ja eigentlich nur die entsprechende Nummer haben willst und wenn ja, was soll damit geschehen?
AW: VBA Suche mit ListBox und ComboBox
05.01.2023 06:24:50
Pirmin
Guten Morgen Herbert,
mit dem Autofilter kommt kein entsprechendes Ergebnis zustande, da er mir nicht immer alle Ergebnisse ausspuckt.
Die Nummer sollen später verlinkt werden und eine pdf öffnen
AW: VBA Suche mit ListBox und ComboBox
05.01.2023 09:37:02
Herbert_Grom
Guten Morgen Pirmin,
bei mir funktioniert der Autofilter schon (s. Bild)! Jetzt geht es nur noch darum, in welche Zelladresse du das Ergebnis (die Nummer) hinhaben willst? Oben siehst du die neue Userform, ohne Listbox, unten das Ergebnis der Filterung.
Und was ist, wenn es evtl. mehrere Treffer gibt?
Servus
Userbild
Anzeige
AW: VBA Suche mit ListBox und ComboBox
05.01.2023 15:31:40
Herbert_Grom
Hallo Pirmin,
mit "Start" öffnest du die Userform. In der befinden sich 9 ComboBoxen, deren Inhalt sich je nach Filterung darstellt, so dass du immer nur die, für die jeweilige Filterung zur Verfügung stehenden, Suchbegriffe auswählen kannst. Die Listbox benötigst du nicht mehr, da die Filterung in der Originaltabelle erfolgt.
Die gefundene Nummer wird in die Zelle "c_NUMMER", die sich in "DATEN" K2 befindet, geschrieben. Probiers mal.
https://www.herber.de/bbs/user/157110.xlsm
Servus
P.S.: Mit großer Unterstützung von Werner (neopa_C) erstellt!
Anzeige
AW: VBA Suche mit ListBox und ComboBox
05.01.2023 15:58:18
Pirmin
Hallo Herbert,
Entschuldigung, ich hatte bislang noch keine Zeit nochmal herauszufinden was genau mich am Autofilter damals gestört hat.
Meine Autofilter Codes scheinen nicht mehr zu funktionieren.
Ich schau mir deine Lösung gerne nächste Woche an.
Vielen lieben Dank für deine (eure?) bisherigen Mühen, einen schönen Feiertag und ein schönes Wochenende
Pirmin
AW: VBA Suche mit ListBox und ComboBox
05.01.2023 16:00:43
Herbert_Grom
Du weißt aber schon, dass dein Thread nächste Woche nur noch im Archiv zu finden ist und du nicht mehr antworten kannst. Falls du mir antworten willst, dann findest du meine eMail-Adr hier in den Profilen.
Servus
Anzeige
AW: VBA Suche mit ListBox und ComboBox
05.01.2023 20:34:24
Pirmin
Oh gut zu wissen. Danke dir.

91 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige