Herbers Excel-Forum - das Archiv

VBA Suchfunktion erweitern

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: VBA Suchfunktion erweitern
von: Glen

Geschrieben am: 21.07.2008 09:04:02

Hallo liebe Leute
Folgendes Sheet habe ich mir ab der Herber CD gezogen.
Zur Funktion:
Nach Eingabe in Suchbegriff und Klick auf Eintragen, wird der Begriff gesucht und wenn dieser gefunden wurde, wird das Resultat - Begriff unterhalb des Suchbegriffs in der Tabelle - in der UserForm ausgegeben.
Nun wollte ich fragen, ob mich jemand dabei unterstützen kann, die Funktion dahingehend zu erweitern, dass nicht nur eine Zelle unterhalb gesucht wird, sondern in allen Zellen bis die nächste leere Zelle erscheint.
Hier der bestehende Code:

Private Sub CommandButton1_Click()
Dim gZelle As Range
Set gZelle = Worksheets("Daten").Columns(1).Find(TextBox1.Text, lookat:=xlWhole)
If gZelle Is Nothing Then
Label3.Caption = "Nicht gefunden!"
Else
Label3.Caption = gZelle.Offset(1, 0)
End If
End Sub


Für eure Hilfe schon im voraus tausend Dank.
Freundlicher Gruss, Glen

Bild

Betrifft: AW: VBA Suchfunktion erweitern
von: Klaus-Dieter

Geschrieben am: 21.07.2008 10:22:21
Hallo Glenn,
Herbert hat da die Find-Methode verwendet. In der Excelhilfe findest du die Methode mit der Möglichkeit auch mehrere Treffer zu erhalten:

With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With


Das musst du nur noch auf deine Anforderung anpassen. Man kann die Treffer zum Beipiel mit AddItem in eine Listbox schreiben.
Viele Grüße Klaus-Dieter

Online-Excel

Bild

Betrifft: AW: VBA Suchfunktion erweitern
von: Klaus-Dieter

Geschrieben am: 21.07.2008 10:25:47
Hallo Glenn,
Herbert hat die Find-Methode verwendet. In der Excel-Hilfe ist beschrieben, wie man die auch für mehrere Treffer verwenden kann:

With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With


Das musst du nur noch an deine Anfoerungen anpassen. Man kann die Treffen zum Beispiel mit AddItem in ein Listenfeld schreiben.
Viele Grüße Klaus-Dieter

Online-Excel

 Bild
Excel-Beispiele zum Thema "VBA Suchfunktion erweitern"
Benannten Bereich erweitern ListBox bei Eintrag erweitern