Clever-Excel-Forum

Normale Version: Fehler in der Suchroutine
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Gemeinde,

da hab ich mir für ein Projekt eine Suchroutine gebastelt, die in einer Tabelle nacheinander den jeweiligen Suchbegriff in der entsprechenden Zelle markieren soll. Leider tut sie das nicht und ich finde den Fehler nicht! :@ :@ :@ 

Ein entsprechendes Musterschema mit dem original VBA-Code häge ich hier an.
Suche ich nach "Tür", so wird die erste Zeile des Suchbereiches ausgelassen, suche ich dann dagegen nach "Zimmer" wird mir ein Fundort übersprungen - ich bin völlig ratlos! Nach meiner Logik sollte es eigentlich richtig funktionieren, aber .....
Und wenn der Suchbegriff der letzten Zeile gesucht und gefunden wird, geht es in eine Endlosschleife - hhmmm???


Wer kann mir helfen?
Hallo Günter,

so gehts:

[attachment=3727]
Hallo Edgar,

das attachment=3726 sagt mir garnichts? Dodgy Dodgy 

Hast du vergessen, die Datei anzuhängen?
korrigiert
Hallo Edgar,

vielen Dank, das funktioniert - muss ich recherieren, was da so anders als bei mir ist!
Allerdings beginnst du bereits in Zeile 7 zu suchen, obwohl doch der Suchbereich erst ab Zeile 8 losgeht - warum ist das so?
(31.12.2015, 19:27)Glausius schrieb: [ -> ]Hallo Edgar,

vielen Dank, das funktioniert - muss ich recherieren, was da so anders als bei mir ist!
Allerdings beginnst du bereits in Zeile 7 zu suchen, obwohl doch der Suchbereich erst ab Zeile 8 losgeht - warum ist das so?
Hallo Günter,

ich hoffe, Du nimmst auch meine Antwort. Das liegt an dem Parameter After. Wenn der nicht angegeben ist, wie es hier der Fall ist, wird nach der linken oberen Zelle mit dem Suchen begonnen. Siehe auch Auszug aus der OH

Zitat:Gibt die Zelle an, nach der mit der Suche begonnen werden soll. Dies entspricht der Position der aktiven Zelle, wenn eine Suche über die Benutzeroberfläche ausgeführt wird. Beachten Sie, dass After eine einzelne Zelle im Bereich darstellen muss. Beachten Sie zudem, dass die Suche hinter dieser Zelle beginnt; die angegebene Zelle wird also erst durchsucht, wenn der Suchlauf zur Ausgangszelle zurückkehrt. Wird das Argument nicht angegeben, stellt die obere linke Zelle des Bereichs den Ausgangspunkt für die Suche dar.

Edgar hat dadruch, das er eine Zeile weiter oben beginnt den Suchbereich vergrößert und er findet somit den ersten Treffer auch in der Zeile 8.

Nachtrag: Oder setze den Parameter auf die letzte, rechte Zelle des Suchbereichs, so wie ich es im Code geändert habe.

Code:
Sub Suchen_aufrufen()
    loLetzte = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
    gesucht = ""
    i = 0
    Range("D7").Select
    Suchen.Show
    If Flag = False Then
        ActiveSheet.CommandButton2.Caption = "Suche"
        Exit Sub
    End If
    With ActiveSheet.Range("D8:D" & loLetzte)
        Set Gefunden = .Find(gesucht, after:=Range("D" & loletze).Row, LookAt:=xlPart, LookIn:=xlValues)
        If Gefunden Is Nothing Then
        nichts_gefunden
        Exit Sub
        Else
        loZeile = Gefunden.Row
        Set rng = Range(Gefunden.Address)
        rng.Select
        End If
        
    End With
    ActiveSheet.CommandButton2.Caption = "weiter suchen"
    Art = True
End Sub
Hallo,

Direktantwort vom Handy funktioniert schon mal nicht. Ansonsten hat Stefan schon alles gesagt.
Hallöchen,
Test.
Das ist eine Direktamtwort vom Handy.
(31.12.2015, 19:44)BoskoBiati schrieb: [ -> ]Hallo,

Direktantwort vom Handy funktioniert schon mal nicht. Ansonsten hat Stefan schon alles gesagt.
Hallo André,

liegt wohl an meinem Handy.