Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suchfunktion

Suchfunktion
16.04.2006 23:35:15
Hasan
Hallo alle zusammen,
gibt es jmd. der mir beim folgenden Problem weiterhelfen kann.
Habe auf eine excel-datei mit 4 spalten (Land,Postleitzahl,Produkt, e-mai).
Wie schaffe ich es, dass nach Auswahl der ersten 3 Kriterien (also: Land, Postleitzahl, Produkt) aus 3 Listboxen in einem Textbox die betreffende e-mail-Adresse notiert wird.
Der Code soll also die 3 Kriterien durch die Exceltabelle durchlaufen und wenn er die Eingabe gefunden hat, soll er mir auf Spalte 4 (e-mail) die E-mail adresse in ein Textbox auf einem Formular kopieren.
Gruss,
Hasan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion
17.04.2006 04:17:48
Heinz
Hallo Hassan
Hier ein Code der Deinen Vorstellungen am nächsten kommt.
Auswahl aus gesamten Daten der Spalte A (Land), dann Auswahl
der gefilterten Daten aus Spalte B (Plz) und Anzeige nach Auswahl (Prod)
ebenfalls gefilter aus Spalte C.
Dim strLand, strPlz, strProd, strAdr As String

Private Sub UserForm_Activate()
'Füllt die Boxen beim Starten der UF mit allen Daten
'-----------Liste in ListBox1,2,3 hinzufügen--------
For Zähler = 0 To ListBox1.ListCount
If ListBox1.ListCount >= 1 Then
If ListBox1.ListIndex = -1 Then
ListBox1.ListIndex = ListBox1.ListCount - 1
End If
ListBox1.RemoveItem (ListBox1.ListIndex)
End If
Next Zähler
For Zähler = 0 To ListBox2.ListCount
If ListBox2.ListCount >= 1 Then
If ListBox2.ListIndex = -1 Then
ListBox2.ListIndex = ListBox2.ListCount - 1
End If
ListBox2.RemoveItem (ListBox2.ListIndex)
End If
Next Zähler
For Zähler = 0 To ListBox3.ListCount
If ListBox3.ListCount >= 1 Then
If ListBox3.ListIndex = -1 Then
ListBox3.ListIndex = ListBox3.ListCount - 1
End If
ListBox3.RemoveItem (ListBox3.ListIndex)
End If
Next Zähler
Set aktuelleZelle = Worksheets(2).Range("A2")
Do While Not IsEmpty(aktuelleZelle)
Set nächsteZelle = aktuelleZelle.Offset(1, 0)
ListBox1.AddItem aktuelleZelle.Offset(0, 0)
ListBox2.AddItem aktuelleZelle.Offset(0, 1)
ListBox3.AddItem aktuelleZelle.Offset(0, 2)
Set aktuelleZelle = nächsteZelle
Loop
TextBox1.Locked = True
End Sub


Private Sub ListBox1_Click()
'Füllt die Box2 mit allen Daten nach Auswahl aus Box1
'-----------Liste in ListBox2 hinzufügen-------------
strLand = ListBox1.Text
For Zähler = 0 To ListBox2.ListCount
If ListBox2.ListCount >= 1 Then
If ListBox2.ListIndex = -1 Then
ListBox2.ListIndex = ListBox2.ListCount - 1
End If
ListBox2.RemoveItem (ListBox2.ListIndex)
End If
Next Zähler
For Zähler = 0 To ListBox3.ListCount
If ListBox3.ListCount >= 1 Then
If ListBox3.ListIndex = -1 Then
ListBox3.ListIndex = ListBox3.ListCount - 1
End If
ListBox3.RemoveItem (ListBox3.ListIndex)
End If
Next Zähler
Set aktuelleZelle = Worksheets(2).Range("A2")
Do While Not IsEmpty(aktuelleZelle)
Set nächsteZelle = aktuelleZelle.Offset(1, 0)
If aktuelleZelle = strLand Then
ListBox2.AddItem aktuelleZelle.Offset(0, 1)
ListBox3.AddItem aktuelleZelle.Offset(0, 2)
End If
Set aktuelleZelle = nächsteZelle
Loop
TextBox1.Text = ""
End Sub


Private Sub ListBox2_Click()
'Füllt die Box3 mit allen Daten nach Auswahl aus Box2
'-----------Liste in ListBox3 hinzufügen-------------
strPlz = ListBox2.Text
TextBox1.Text = ""
For Zähler = 0 To ListBox3.ListCount
If ListBox3.ListCount >= 1 Then
If ListBox3.ListIndex = -1 Then
ListBox3.ListIndex = ListBox3.ListCount - 1
End If
ListBox3.RemoveItem (ListBox3.ListIndex)
End If
Next Zähler
Set aktuelleZelle = Worksheets(2).Range("A2")
Do While Not IsEmpty(aktuelleZelle)
Set nächsteZelle = aktuelleZelle.Offset(1, 0)
If aktuelleZelle.Offset(0, 1) = CStr(strPlz) Then
ListBox3.AddItem aktuelleZelle.Offset(0, 2)
End If
Set aktuelleZelle = nächsteZelle
Loop
TextBox1.Text = ""
End Sub


Private Sub ListBox3_Click()
'Füllt die TextBox1 mit Text nach Auswahl aus Box3
'-----------Liste in ListBox3 hinzufügen----------
strProd = ListBox3.Text
Set aktuelleZelle = Worksheets(2).Range("A2")
Do While Not IsEmpty(aktuelleZelle)
Set nächsteZelle = aktuelleZelle.Offset(1, 0)
If aktuelleZelle.Offset(0, 2) = strProd Then
strAdr = aktuelleZelle.Offset(0, 3)
End If
Set aktuelleZelle = nächsteZelle
Loop
TextBox1.Text = strAdr
End Sub

Wünsch' Dir noch schöne Ostern und mir ev. Rückmeldung
lg.
Heinz
Anzeige
AW: Suchfunktion
17.04.2006 13:27:13
hasan
hallo heinz,
ich werde dir um einen besseren Überblick zu haben, das von mir vorbereitete Formular mit der Exceldatei uploaden.
gruss,
hasan
AW: Suchfunktion
17.04.2006 13:41:25
Hasan
https://www.herber.de/bbs/user/32929.xls,
hi heinz,
oben findest du den Link zu der Excel-Tabelle mit den Rohdaten und dem Makro+Formular
für die kleine Anwendung zur Suche von e-mail-Adressen.
Die Rohdaten sind nur ein fiktives Beispiel, die nicht der Realität entprechen.
Beschreibung des Problems:
Was ich schon habe: 3 Listboxen(Land, Postleitzahl, Produkt) und drei Textboxen, die den Inhalt der Listboxen ein 2.Mal einfach nur abbilden.
Was ich benötige: Einen Code, der nach Auswahl von Land, Postleitzahl, Produkt, die entsprechende e-mail-adresse findet. Die Reihenfolge der Spalten 1, 2, 3, 4 bilden Land, Postleitzahl, Produkt und E-mailadresse ab.
Der Code muss also, die gewählten ersten 3 Such-Kriterien nehmen und diese in meiner Excelliste wiederfinden und dann in genau dieser Zeile auf Spalte 4 die zugehörige e-mail-Adresse in meiner Textbox.1 auf dem Formularblatt wiedergeben.
That´s it.
Da ich ich mich nicht besonders auskenne, komm ich einfach hier nicht weiter.
Heinz, habe ich dir das Problem jetzt besser veranschaulicht?
Gruss,
Hasan
Anzeige
AW: Suchfunktion
18.04.2006 11:04:19
Susanne
Hallo Hasan,
weiss zwar nicht ob ich dein Problem richtig verstanden habe, aber probiere es mal damit:
du fügst ganz an den Anfang der Tabelle eine Spalte ein (die kannst du ja später mit Format-Spalte-ausblenden unsichtbar machen). Dann sagst du dort : =A&B&C
Damit zieht der dir Land, Poztleitzahl und Produkt zu einem Begriff zusammen.
Das Gleiche machst du in der Tabelle wo die Mail-Adressen stehen. Und nun suchst du mit dem S-Verweis über den Schlüssel den du dir erzeugt hast die mail-Adresse.
LG
Susanne

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige