Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1172to1176
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme mit .Find / .FindNext Methode

Probleme mit .Find / .FindNext Methode
Holger
Hallo,
in einer UnterProzedur benutze ich erst die Cells.Find Methode und anschliessend in einer Do ... Loop Schleife die .FindNext Methode. Hab ich aus der VB Hilfe geklaut ;).
Der gesuchte Wert kann jedenfalls mehrmals vorhanden sein und es muss noch ein zweites Kriterium überprüft werden, damit eine Aktion erfolgt.
Nun kann der Fall eintreten, dass der Wert zwar gefunden wird, aber das Kriterium nicht und dann sollte die Prozedur verlassen. Genau das klappt aber nicht,
da .FindNext anscheinend ewig Werte liefert, da es immer wieder von vorne anfängt?!
Gibt es hierfür eine Lösung?
Sub MatchProductID(ByVal ProductID As String, ByVal ctry As String, ByVal rngBereich As Range)
Dim rngmyCell As Range
Dim blnID As Boolean
InstoreWS.Activate
blnID = False
With rngBereich
Set rngmyCell = .Find(ProductID, LookIn:=xlValues)
If Not rngmyCell Is Nothing Then
Do
If rngmyCell.Offset(0, 4).Value = ctry Then
strProductCode = rngmyCell.Offset(0, 1).Value
blnID = True
Exit Sub
End If
Set rngmyCell = .FindNext(rngmyCell)
Loop While Not rngmyCell Is Nothing And blnID = False 'Problem, er geht nur raus  _
wenn das zweite Kirterim erfüllt ist, ansonsten ist er in einer Endlosschleife, das .FindNext immer wieder ein Ergebnis liefert.
Else
strProductCode = "N.A."
End If
End With
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Probleme mit .Find / .FindNext Methode
25.08.2010 11:42:18
Rudi
Hallo,
Sub MatchProductID(ByVal ProductID As String, ByVal ctry As String, ByVal rngBereich As Range)
Dim rngmyCell As Range
Dim blnID As Boolean
Dim strFirstAddress As String
InstoreWS.Activate
blnID = False
With rngBereich
Set rngmyCell = .Find(ProductID, LookIn:=xlValues)
If Not rngmyCell Is Nothing Then
strFirstAddress = rngmyCell.Address
Do
If rngmyCell.Offset(0, 4).Value = ctry Then
strProductCode = rngmyCell.Offset(0, 1).Value
blnID = True
Exit Sub
End If
Set rngmyCell = .FindNext(rngmyCell)
Loop While Not rngmyCell Is Nothing And blnID = False And rngmyCell.Address   _
strFirstAddress
'Problem, er geht nur raus wenn das zweite Kirterim erfüllt ist, _
ansonsten ist er in einer Endlosschleife, das .FindNext immer wieder ein Ergebnis  _
liefert.
Else
strProductCode = "N.A."
End If
End With
End Sub

Gruß
Rudi
Anzeige
AW: Probleme mit .Find / .FindNext Methode
25.08.2010 13:33:39
Holger
Hallo Rudi,
Vielen Dank!
Nur wie funktioniert das, denn in der Hilfe ist das auch so angegeben, ich verstehe nur die Idee dahinter nicht. Wenn immer wieder ein Ergebnis gefunden wird, ist doch auch der String immer wieder derselbe, oder nicht ?
AW: Probleme mit .Find / .FindNext Methode
25.08.2010 15:21:12
Rudi
Hallo,
strFirstAddress wird doch nur beim ersten Fund gesetzt, da außerhalb Do...Loop. Ergo wird die Schleife verlassen, wenn die Fundstelle der ersten entspricht.
Gruß
Rudi
AW: Probleme mit .Find / .FindNext Methode
25.08.2010 11:47:14
wsp
Hallao Holger,
versuch mal :
Sub MatchProductID(ByVal ProductID As String, ByVal ctry As String, ByVal rngBereich As Range)
Dim strAdresse As String
Dim rngmyCell As Range
With rngBereich
Set rngmyCell = .Find(ProductID, LookIn:=xlValues)
If Not rngmyCell Is Nothing Then
strAdresse = rngmyCell.Address
Do
If rngmyCell.Offset(0, 4).Value = ctry Then
strProductCode = rngmyCell.Offset(0, 1).Value
Exit Sub
End If
Set rngmyCell = .FindNext(rngmyCell)
Loop While Not rngmyCell Is Nothing And rngmyCell.Address  strAdresse
End If
End With
strProductCode = "N.A."
End Sub
Gruss Wolfgang
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige