31.12.2015, 19:00 (Dieser Beitrag wurde zuletzt bearbeitet: 31.12.2015, 19:54 von Glausius.)
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?
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
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?
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
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?
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
31.12.2015, 20:35 (Dieser Beitrag wurde zuletzt bearbeitet: 31.12.2015, 20:53 von Steffl.
Bearbeitungsgrund: um ein Codebeispiel ergänzt
)
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