Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
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

Suchen über eine Und-Verknüpfung

Suchen über eine Und-Verknüpfung
03.02.2020 10:52:06
Martin
Liebes Forum in meiner Verzweiflung wende ich mich wieder einmal an euch,
mein Problem ist ein Sub in dem über eine "And-Verknüpfung" mit mehren Argumenten eine Tabelle nach einem Datensatz durchsucht wird. Dazu habe ich wie unten im Quellcode zu sehen eigentlich vor, dass es die Daten der gefundenen Zeile mit den Eingaben überprüft und dann erst in der Listbox ausgibt. Doch bis jetzt sucht er nur in der über den Firmenname und beachtet die anderen beiden Eingaben überhaupt nicht.
Hättet ihr eine Idee wie das zu verwirklichen wäre?
Ich hoffe auf eure schnelle Hilfe.
Mein bisheriger Quellcode:
Private Sub CommandButtonKundenSuchen_Click()
Dim SuchbereichFirma As Range, Firmenspalte As Range, Firmenname As String
Dim SuchbereichNachname As Range, Nachnamenspalte As Range, Nachname As String
Dim SuchbereichPLZ As Range, PLZspalte As Range, PLZ As String
Arbeitsmappe.showSpecificSheet (Defines.getKundendaten)
Worksheets("Kundendaten").Select
Firmenname = TextBoxKundenFirma
Set SuchbereichFirma = Range("B4", Range("B4").End(xlDown))
Set Firmenspalte = SuchbereichFirma.Find(what:=Firmenname, MatchCase:=False, lookat:=xlPart) _
Nachname = TextBoxKundenNachname
Set SuchbereichNachname = Range("E4", Range("E4").End(xlDown))
Set Nachnamenspalte = SuchbereichNachname.Find(what:=Nachname, MatchCase:=False, lookat:= _
xlPart)
PLZ = TextBoxKundenPLZ
Set SuchbereichPLZ = Range("I4", Range("I4").End(xlDown))
Set PLZspalte = SuchbereichPLZ.Find(what:=PLZ, MatchCase:=False, lookat:=xlPart)
If PLZspalte = Range("I4", Range("I4").End(xlDown)).Find(what:=PLZ, MatchCase:=False,  _
lookat:=xlPart) And Nachnamenspalte = Range("E4", Range("E4").End(xlDown)).Find(what:=Nachname, MatchCase:=False, lookat:=xlPart) And Firmenspalte = Range("B4", Range("B4").End(xlDown)).Find(what:=Firmenname, MatchCase:=False, lookat:=xlPart) Then
With ListBoxKundenEinträge
.AddItem (0)
.List(.ListCount - 1, 0) = Firmenspalte
End With
Else
With ListBoxKundenEinträge
.AddItem (0)
.List(.ListCount - 1, 0) = "Keinen Eintrag gefunden"
End With
End If
End Sub

Gruß
Martin

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur eine Spalte in Listbox?
03.02.2020 12:15:57
hary
Moin
Dein Code sollte funktionieren doch. Hast du evtl. die Listbox nur mit einer Spalte eingerichtet?
So wie du es hast wird nur der Firmenname eingetragen.
With ListBoxKundenEinträge
.ColumnCount = 3 '--Spaltenanzahl vorgeben/ anpassen
.AddItem (0)
.List(.ListCount - 1, 0) = Firmenspalte
.List(.ListCount - 1, 1) = Nachnamenspalte
.List(.ListCount - 1, 2) = PLZspalte
End With

Was ist wenn es den Firmennamen mehrfach gibt? Oder kommt das nicht vor.
gruss hary
AW: nur eine Spalte in Listbox?
03.02.2020 14:23:31
Martin
Hey Hary,
ja es kann möglich sein, dass bestimmte Firmennamen mehrfach auftreten, deshalb sollte ja auch gleichzeitig nach dem Nachnamen und der Postleitzahl gesucht werden.
Danke für den Code für die Listbox aber das Problem, dass die Tabelle nur nach dem Firmenname durchsucht ist trotzdem noch vorhanden.
Ich habe es zwischenzeitlich einmal mit einer anderen If Anweisung probiert, doch nun muss der Wert in den TextBoxen genau mit dem in der Tabelle übereinstimmen. Eigentlich sollte aber nicht auf Groß-und Kleinschreibung geachtet werden und auch nur mit einem Bruchteil des Datensatzes gesucht werden können z.B. anstatt "Airbus" nur "Air" in die Textbox einzugeben.
Gruß
Martin
Anzeige
AW: nur eine Spalte in Listbox?
03.02.2020 20:45:58
Matthias
Moin!
Also wenn ein Wert mehrfach vorkommt, dürfte dein Code so nicht alle finden. Da fehlt ja irgendwie die Schleife durch alle Treffer. ICh würde es anders angehen:
Nimm die find FUnktion wie bisher nach dem Namen. Die Treffer durchläufst du in einer Schleife wie in der Hilfe dazu beschrieben: https://docs.microsoft.com/de-de/office/vba/api/excel.range.find
Bei jedem Treffer prüfst du dann, ob in der Zeile die Postleitzahl identisch mit der in der Textbox ist und ob der Name identisch ist. Für das identisch kannst du mit instr prüfen und alles Groß bzw. Kleinschreiben ( UCASE bzw. LCASE). Damit schaust du, ob der Teil darin vorkommt.
Wenn das zutrifft, lädst du den Wert in die Listbox.
Da ich grad nicht viel Zeit habe, nur die Ablauf aber kein ganzer Code. Wenn du da Hilfe brauchst, bitte nochmal melden.
VG
Anzeige
AW: mit find.next
04.02.2020 08:13:58
hary
Moin
Dann mit findnext und Platzhalter bei der "Firmenname" Suche.
Du musst im Code den Blattnamen ggf. anpassen.(auskommentiert)
Private Sub CommandButtonKundenSuchen_Click()
Dim Firmenname As String, Nachname As String, PLZ As String, firstAddress As String
Dim rngFind As Range
Dim wks As Worksheet
Dim a As Boolean
Firmenname = TextBoxKundenFirma '--SpalteB
Nachname = TextBoxKundenNachname '--SpalteE
PLZ = TextBoxKundenPLZ '--SpalteI
ListBoxKundenEinträge.Clear '--Listbox loeschen
ListBoxKundenEinträge.ColumnCount = 3 '--Spaltenanzahl vorgeben/ anpassen
Set wks = Worksheets("Tabelle1") '--Blattname ggf. anpassen
Set rngFind = wks.Columns("B:B").Find("*" & Firmenname & "*", LookIn:=xlFormulas, Lookat:= _
xlWhole)
If Not rngFind Is Nothing Then
firstAddress = rngFind.Address
Do
If Nachname = wks.Cells(rngFind.Row, "E") And PLZ = wks.Cells(rngFind.Row, "I")  _
Then
With ListBoxKundenEinträge
.AddItem (0)
.List(.ListCount - 1, 0) = rngFind
.List(.ListCount - 1, 1) = wks.Cells(rngFind.Row, "E")
.List(.ListCount - 1, 2) = wks.Cells(rngFind.Row, "I")
End With
a = True
Exit Do
End If
Set rngFind = wks.Columns("B:B").FindNext(rngFind)
Loop While rngFind.Address  firstAddress
End If
If Not a Then
With ListBoxKundenEinträge
.AddItem (0)
.List(.ListCount - 1, 0) = "Keinen Eintrag gefunden"
End With
End If
Set wks = Nothing
a = False
End Sub

Warum nimmst du nicht den Filter im Blatt?
gruss hary
Anzeige
AW: mit find.next
04.02.2020 10:11:13
Martin
Hey,
Ja danke es klappt soweit alles wie gewünscht. Den Rest sollte ich allein schaffen.
Ich glaube ohne die Hilfe hätte ich das vermutlich nicht hinbekommen, nochmal ein echt großes Dankeschön.
Ich wünsche dir noch einen schönen Tag.
Gruß
Martin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige