Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Find-Methode zweimal nutzen

Betrifft: Find-Methode zweimal nutzen von: Nutzer22
Geschrieben am: 29.09.2020 17:40:37

Hallo zusammen,
ich habe folgenden Code:

Sub TESTER()

Dim Ziel As Worksheet
Dim Quelle As Worksheet

Set Quelle = Worksheets("Beispiel1")

Dim wert1 As Range
Dim wert2 As Range

Dim rgSearch As Range
Set rgSearch = Quelle.Range("A1:G55")

Set wert1 = rgSearch.Find("Hallo", LookIn:=xlValues, LookAt:=xlWhole)
Set wert2 = rgSearch.Find("test", LookIn:=xlValues, LookAt:=xlWhole)

Dim firstCellAddress As String
firstCellAddress = wert1.Address


Do
    MsgBox ("Wert 1: " & wert1)
    Set wert1 = rgSearch.FindNext(wert1)
Loop While firstCellAddress <> wert1.Address


End Sub
In meiner Tabelle befindet sich mehrfach der Wert "Hallo" und mehrfach der Wert "test".

Jetzt bekomme ich beim Ausführen in der MsgBox in der ersten "Runde" den richtigen gefundenen Wert "Hallo". Jedoch danach gibt er mir nur noch die Werte "test" aus. Dies ist nicht richtig, weil ich nur alle "Hallo" angezeigt bekommen möchte.
Wenn ich die Zeile "Set wert2 = rgSearch.Find("test", LookIn:=xlValues, LookAt:=xlWhole)" lösche, funktioniert alles wie es soll.

Wieso springt die FindNext() Methode in den Find-Aufruf von "test"?

Das weglassen der Zeile von Wert2 ist leider keine Option, da ich diesen später benötige.

Vielen Dank im Voraus :)

Betrifft: AW: Find-Methode zweimal nutzen
von: Daniel
Geschrieben am: 29.09.2020 17:47:27

Hi
das FindNext bezieht sich halt immer auf die letzte Suche.

du kannst anstelle von FindNext auch das normale .Find mit allen seinen Parametern angeben und dabei, um das .FindNext zu simulieren zusätzlich den Parameter: After:=Wert1 angeben.
Bei After:= stellt man die Zelle ein, nach der die Suche beginnen soll, dh immer die zuletzt gefundene Zelle zu diesem Suchwert.

Gruß Daniel

Betrifft: AW: Find-Methode zweimal nutzen
von: Nutzer22
Geschrieben am: 29.09.2020 17:55:02

Hey Daniel,

super, vielen Dank. So funktioniert es! :D

Find es trotzdem doof, dass sich das FindNext() nicht auf bestimmte Find() beziehen lässt... Aber damit werd ich Leben müssen ;)

Danke nochmal!

Betrifft: AW: Find-Methode zweimal nutzen
von: Daniel
Geschrieben am: 29.09.2020 18:00:33

dann müsste man ja irgenwie angeben, auf welches .Find man sich bezieht und dann wäre es wieder genauso aufwendig wie ein normales .Find und man könnte auf die Funktion auch verzichten.
im Prinzip musst du ja nur auf die richtige Reihenfolge der vorausgehenden .FINDs achten.