Textsuche / Vergleich
#11
Weil das ein Teil eines umfangreichen Formulares ist.
Es soll so funktionieren wie angegeben.
Wie ich das ganze händisch, oder per Filter im Tabellenblatt finde ist mir klar, aber das ist nicht das Ziel.
Top
#12
Dann bin ich wohl raus.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#13
Trotzdem vielen Dank.

Ich habe die Frage hier nun auch gestellt.
Top
#14
Hallo,

schau mal, ob das nicht die Richtung ist, in die Du gehen möchtest.

Ist nur ein Beispiel.


.xlsm   Erweiterte Suche über mehrere Tabellen Userform(ati).xlsm (Größe: 34,76 KB / Downloads: 6)
Gruß Atilla
Top
#15
Hallo, ich da mal in Deiner Datei Deine Form etwas verändert.

Schau mal ob Du damit weiter kommst.
Da ich kaum Fehlerabfragen eingebaut habe, kann es bei der einen oder anderen Aktion zu Fehlern kommen.
Die kann man dann je nach Bedienung eingrenzen und eliminieren.


.xlsm   SucheV3_in_Arbeit(ati).xlsm (Größe: 20,92 KB / Downloads: 5)
Gruß Atilla
Top
#16
@Atilla
Vielen Dank.

Ich versuche nun zu verstehen was du gemacht hast, wenn es nicht zu umfangreich wird, könntest du mir die Änderungen / Schritte bitte erklären?

Du hast das Tabellenblatt "Tabelle1" mit den Spalten A/ Ort, B/ Irgendwas1, C/ Info, D/ Katalog, E/ Irgendwas2, F/Irgendwas3, G/ Irgendwas4 in "Info" umbenannt,
dann hast du ein (leeres) Tabellenblatt "Katalog" erstellt.

Du hast ein Unterprogramm welches am Anfang die neu erstellte ListBox und die beiden Textboxen leert.

Code:
Private Sub ComboBox_Suchauswahl_Change()
Me.ListBox1.Clear
TextBox_Ergebnis_Ort.Text = ""
TextBox1 = ""
End Sub

Du hast meine Abfrage per Wenn / Dann nach dem "Suchort" (Spalte C/ Info oder Spalte D /Katalog) entfernt.

Du hast ein Unterprogramm welches am Ende den ausgewählten Text in der Listbox mit der dem im Tabellenblatt "Info" in der Spalte C /Info vergleicht und bei Übereinstimmung
die Zeile ermittelt und den entsprechenden Ort in der Zeile in der Spalte A/ Ort ausgibt.

Code:
Private Sub ListBox1_Click()
Dim x
x = Application.Match(ListBox1, Sheets(ComboBox_Suchauswahl.Text).Columns("C"), 0)
If IsNumeric(x) Then TextBox_Ergebnis_Ort.Text = Sheets(ComboBox_Suchauswahl.Text).Cells(x, 1).Value
End Sub


Was dieses Unterprogramm bewirkt ist mir unklar.

Code:
Private Sub TextBox1_Change()
If Len(TextBox1.Text) Then
   Dim bereich, wert
   Me.ListBox1.Clear
    bereich = Join(Application.Transpose(Sheets(ComboBox_Suchauswahl.Text).Columns("C").Value), "##")
    wert = Filter(Split(bereich, "##"), TextBox1)
    ListBox1.List = wert
   End If
End Sub

Ich habe dann etwas getestet und festgestellt, wähle ich in der Combobox_Suchauswahl "Katalog" aus, funktioniert die Suche nicht.
Ändere ich in den Unterprogrammen der ListBox1 und TextBox1 jeweils Columns von "C" auf "D", dann wird die Spalte D/ Katalog durchsucht, bei "C" die Spalte C/ Info.

Das bedeutet die Auswahl der Combobox_Suchauswahl muss immer auf "Info" stehen und der Suchbereich wird über die Einstellung Columns geändert.

Ist das so richtig?
Ich versuche zu reproduzieren was die einzelnen Code- Zeilen bedeuten.

LG Jana
Top
#17
Hallo Jana,

ich habe das Gefühl, dass Du selber mit Deinem Projekt etwas überfordert bist.
Es sieht für mich so aus, als ob Du eine Baustelle anfängst und wenn es dort Probleme gibt, dann machst Du eine neue baustelle auf.

Du kommst schneller zum Ziel, wenn Du beharrlich ein Problem zu Ende führst.

Was ich gemacht habe, habe aus Deinen Beschreibungen und den texten auf der Userform abgeleitet.
Da steht bei der ComboBox_Suchauswahl, dass man zwischen zwei Tabellenblättern wählen können sollte.
Da es aber in Deiner Datei die in der Combobox aufgeführten Tabellen nicht gab, habe ich sie halt eingefügt, um zu sehen, wie und ob der Code funktioniert.

Da das Tabellenblatt Katalog keine Daten hat, bringt die Suche keine Ergebnisse.
In beiden Tabellenblättern wird in Spalte C die Eingabe gesucht, welche in die neu von mir eingefügte Textbox gemacht wird.
Bei Fund werden alle Fundergebnisse in der darunterliegende Listbox gelistet.

Und wenn man nun in der Listbox auf einen Eintrag klickt, wird aus der Tabelle der wert aus spalte A, an dieser Fundstelle zurückgegeben, und in die unterste Textbox geschrieben.

Das wolltest Du, meiner Meinung nach erreichen.
Wenn nicht, musst Du aussagekräftigere Beispiele bringen und detailt beschreiben, was Du möchtest.
Beim Verstehen Deines Problems sind wir Laien, deswegen musst Du uns da unterstützen.

diese Zeilen:

Code:
Private Sub TextBox1_Change()
If Len(TextBox1.Text) Then
   Dim bereich, wert
'   Me.ListBox1.Clear
'    bereich = Join(Application.Transpose(Sheets(ComboBox_Suchauswahl.Text).Columns("C").Value), "##")
'    wert = Filter(Split(bereich, "##"), TextBox1)
    ListBox1.List = Filter(Application.Transpose(Sheets(ComboBox_Suchauswahl.Text).Columns("C").Value), TextBox1)
   End If
End Sub

können mit diesen ersetzt werden:

Code:
Private Sub TextBox1_Change()
If Len(TextBox1.Text) Then
    ListBox1.List = Filter(Application.Transpose(Sheets(ComboBox_Suchauswahl.Text).Columns("C").Value), TextBox1)
   End If
End Sub
Warum, kannst Du in Deinem anderen Thema nachlesen. (Danke noch ein mal an Ralf)
Top
#18
Lieber Attila,
ich entschuldige mich, wenn ich mich falsch ausgedrückt habe.

Ursprünglich sollte die ComboBox_Suchauswahl den Suchbereich auswählen.
Entweder Tabelle "Info" (nicht Tabellenblatt!), also die Spalte "C", oder die Tabelle "Katalog" (nicht Tabellenblatt!), also die Spalte "D".
Die Spalte "C" wurde als Tabelle "Info" definiert, die Spalte "D" als Tabelle "Katalog" (wobei "Info" und "Katalog" auch die Überschriften der Spalten sind).

Das bedeutet, ist in der ComboBox_Suchauswahl der Text "Info" - ist der Suchbereich die Spalte "C",
enthält die ComboBox_Suchauswahl den Text "Katalog" - ist der Suchbereich die Spalte "D".
Beide Spalten befinden sich auf dem selben Tabellenblatt.

LG Jana
Top
#19
Hallo Jana,

ok, das war mein Fehler, schlecht gelesen und schlecht geguckt.

Dann lösch alles Code hinter Userform und teste folgenden:

Code:
Private Sub ComboBox_Suchauswahl_Change()
TextBox_Ergebnis_Ort.Text = ""
   If Len(TextBox1.Text) Then
      ListBox1.List = Filter(Application.Transpose(ActiveSheet.ListObjects("DB_1").ListColumns(ComboBox_Suchauswahl.Text).Range), TextBox1)
   End If
End Sub

Private Sub ListBox1_Click()
Dim x
x = Application.Match(ListBox1, Sheets(ComboBox_Suchauswahl.Text).Columns(3), 0)
If IsNumeric(x) Then TextBox_Ergebnis_Ort.Text = Sheets(ComboBox_Suchauswahl.Text).Cells(x, 1).Value
End Sub

Private Sub TextBox1_Change()
   If Len(TextBox1.Text) Then
      ListBox1.List = Filter(Application.Transpose(ActiveSheet.ListObjects("DB_1").ListColumns(ComboBox_Suchauswahl.Text).Range), TextBox1)
   End If
End Sub

Private Sub UserForm_Initialize()
With ComboBox_Suchauswahl
   .AddItem "Info"
   .AddItem "Katalog"
End With
End Sub
Gruß Atilla
Top
#20
Danke Atilla - ein Schritt weiter.
Es fehlt jetzt nur noch, dass bei Suchauswahl "Katalog" und ausgewählten Text in der ListBox das Suchergebnis Ort eingetragen wird.
Bei der Suchauswahl "Info" funktioniert es.

LG Jana
Top


Gehe zu:


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