Clever-Excel-Forum

Normale Version: Suchmaske mit Weitersuchen (VBA)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen

Ich verwende folgende Suchmaske:
Code:
Sub Suche()
Dim rngFind As Range
Dim strTitel As String
strTitel = InputBox("Suchbegriff:", "Suchbegriff eingeben", , 5, 5)
Set rngFind = Columns("A:L").Find(strTitel, _
LookIn:=xlValues)
If Not rngFind Is Nothing Then
rngFind.Select
Else
MsgBox "Es wurde nichts gefunden"
End If
End Sub

Diese funktioniert super, allerdings gibt sie immer nur den ersten Wert aus. Kann mir jemand den Code so anpassen, dass er nach der Markierung der gesuchten Zelle fragt, ober er weitersuchen soll? Allerdings nur so lange, bis jeder Wert einmal gefunden wurde (wenn das geht).

Vielen Dank im Voraus!
Hallöchen,


über unsere Suche findest Du mit dem Stichwort Findnext u.a. diesen Beitrag:
http://www.clever-excel-forum.de/Thread-...t=findnext

Die Lösung von dort baust Du entsprechend angepasst in deinen If-Zweig ein.
Hallo schauan

Danke für deine Antwort. Ich habe bereits mehrere änhliche Besipiele gefunden, jedoch scheitert es an der konkreten Einbettung in meinen Code/mein Problem.
Ich verfüge eigentlich über gar keine VBA-Kenntnisse (nur etwas Programmierkenntnisse in einer Afnängersprache) und bin damit etwas überfordert. Könntetst Du mir den Code entsprechend anpassen?
Da ich das ganze dringend benötige habe ich es nochmals selbst versucht. Leider ohne Erfolg: Entweder bekomme ich Fehler oder es passiert einfach gar nix mehr Dodgy
Hallo,

das könnte dann z.B. so aussehen:
Sub Suche()
 Dim rngFind As Range
 Dim strAdresseErsterTreffer As String
 Dim strTitel As String
 strTitel = InputBox("Suchbegriff:", "Suchbegriff eingeben", , 5, 5)
 If Len(strTitel) Then
   Set rngFind = Columns("A:L").Find(strTitel, LookIn:=xlValues)
   If Not rngFind Is Nothing Then
     strAdresseErsterTreffer = rngFind.Address
     rngFind.Select
     Do While MsgBox("Suche fortsetzen?", vbYesNo, "") = vbYes
       Set rngFind = Columns("A:L").FindNext(rngFind)
       If rngFind.Address = strAdresseErsterTreffer Then
         MsgBox "Es wurde nichts mehr gefunden."
         Exit Do
       End If
       rngFind.Select
     Loop
   Else
     MsgBox "Es wurde nichts gefunden"
   End If
 End If
End Sub
Gruß Uwe
Hallo Kuwer

Vielen, vielen Dank. Funktioniert super!

Ein Problem existiert aber noch: Wenn ich nach Daten (z.B. 12.03.2015) suche, findet er diese nicht. In der Ctrl+F Suche allerdings schon. Kann man das entsprechend anpassen? Wenn ich die Daten in der Suche im amerikanischen Format eingebe 3/12/2015 geht es.
(18.04.2016, 09:07)Hawkeye schrieb: [ -> ]Ein Problem existiert aber noch: Wenn ich nach Daten (z.B. 12.03.2015) suche, findet er diese nicht. In der Ctrl+F Suche allerdings schon. Kann man das entsprechend anpassen? Wenn ich die Daten in der Suche im amerikanischen Format eingebe 3/12/2015 geht es.

Hallo,

so funktioniert es bei mir auch mit Daten:
Sub Suche()
 Dim rngFind As Range
 Dim strAdresseErsterTreffer As String
 Dim varTitel As Variant
 varTitel = InputBox("Suchbegriff:", "Suchbegriff eingeben", , 5, 5)
 If IsDate(varTitel) Then varTitel = CDate(varTitel)
 If Len(varTitel) Then
   Set rngFind = Columns("A:L").Find(varTitel, LookIn:=xlValues)
   If Not rngFind Is Nothing Then
     strAdresseErsterTreffer = rngFind.Address
     rngFind.Select
     Do While MsgBox("Suche fortsetzen?", vbYesNo, "") = vbYes
       Set rngFind = Columns("A:L").FindNext(rngFind)
       If rngFind.Address = strAdresseErsterTreffer Then
         MsgBox "Es wurde nichts mehr gefunden."
         Exit Do
       End If
       rngFind.Select
     Loop
   Else
     MsgBox "Es wurde nichts gefunden"
   End If
 End If
End Sub Gruß Uwe
Hallo

Funktioniert perfekt. Musste nur in einem Dokument den Suchbereich noch vergrössern. Nochmals vielen Dank! Mit meinem Wissen hätte ich das nie hingekriegt, das habe ich nach 2h rumprobieren definitiv realisiert Wink