Supportnet / Forum / Tabellenkalkulation
Problem mit der "find" Methode
Frage
Hallo comunity,
ich versuche gerade ein such funktion in Excel 2000 zu implementieren (hab auch schon sehr viel Hilfe hier gefunden) und bin erneut an ein Problem gestoßen.
Die "find" funktion soll auch Werte finden die innerhalb eines längeren Strings sind. z.B. "Test" in "Testbericht". Wenn ich den Methodenaufbau richtig verstehe kann man das steuern duch den Parameter "LookAt" mit seinen Werten xlPart und xlWhole. Ich habe es jetzt auch in meinem Code probiert. Aber egal welchen Wert ich nehme, es macht keinen Unterschied. Ich hänge nochmal den entsprechenden Code mit an zum besseren Verständnis.
Sub Duplikate_finden()
Dim WS As Worksheet
Dim Zeile As Integer, Bereich As Integer
Dim Spalte As Integer
Dim such As String
On Error GoTo NixFind
such = _
InputBox(prompt:= _
"please enter the code you are looking for: ", _
Title:="", Default:="")
If such = "" Then
MsgBox ("searchcanceled!")
Exit Sub
Else
Debug.Print such
End If
For Each WS In Worksheets
WS.Activate
For Spalte = 1 To WS.Cells.Find("*", [A1], xlValues, xlPart, xlByColumns, xlPrevious).column [b]´ hier reagiert er nicht darauf wenn ich statt xlPart xlWhole schreibe[/b]
Bereich = WS.Cells(WS.Cells.Rows.count, Spalte).End(xlUp).row
For Zeile = Bereich To 1 Step -1
If WS.Cells(Zeile, Spalte) = such Then
WS.Cells(Zeile, Spalte).Select ´Gefundene Zeile wird markiert
Select Case MsgBox("Der Eintrag """ & WS.Cells(Zeile, Spalte).Value & """ befindet sich in Zelle " & WS.Cells(Zeile, Spalte).Address _
& Chr(13) & "Ist ihre Suche damit beendet?", vbYesNoCancel, "Sicherheitsabfrage...")
Case 2 ´Schaltfläche Abbruch
MsgBox ("Suche abgebrochen!")
Sheets("MainMenue").Select
Exit Sub
Case 6 ´Schaltfläche Ja
Exit Sub
Case 7 ´Schaltfläche Nein
End Select
End If
Next ´next row
Next ´next column
Next ´next sheet
MsgBox "Es wurden keine weiteren Einträge gefunden!", , "Info..."
Sheets("MainMenue").Select
Exit Sub
NixFind:
MsgBox "Es wurde kein Eintrag gefunden!", , "Info..."
Sheets("MainMenue").Select
End Sub
Antwort 1 von Beverly
Hi,
schau mal, ob dir dieser Code weiterhilft
Bis später,
Karin
schau mal, ob dir dieser Code weiterhilft
Sub Duplikate_finden()
Dim WS As Worksheet
Dim raZelle As Range
Dim strAdresse As String
Dim such As String
Dim loTabelle As Long
such = _
InputBox(prompt:= _
"please enter the code you are looking for: ", _
Title:="", Default:="")
If such = "" Then
MsgBox ("searchcanceled!")
Exit Sub
End If
For loTabelle = 1 To Worksheets.Count
With Worksheets(loTabelle).UsedRange
Set raZelle = .Find(such, lookat:=xlPart, LookIn:=xlValues)
If Not raZelle Is Nothing Then
strAdresse = raZelle.Address
Do
raZelle.Interior.ColorIndex = 6
Select Case MsgBox("Der Eintrag """ & raZelle & """ befindet sich in Tabelle " & Worksheets(loTabelle).Name & " Zelle " & raZelle.Address _
& Chr(13) & "Ist ihre Suche damit beendet?", vbYesNoCancel, "Sicherheitsabfrage...")
Case 2 ´Schaltfläche Abbruch
MsgBox ("Suche abgebrochen!")
Exit Sub
Case 6 ´Schaltfläche Ja
Exit Sub
Case 7 ´Schaltfläche Nein
End Select
Set raZelle = .FindNext(raZelle)
Loop While Not raZelle Is Nothing And raZelle.Address <> strAdresse
End If
End With
Next loTabelle
If raZelle Is Nothing Then MsgBox "Es wurden keine Einträge gefunden!", , "Info..."
End Sub
Bis später,
Karin
Antwort 2 von Handybike
HI Katrin,
danke für den Code. Der hat mir sehr geholfen. Musste aber noch eine Kleinigkeit ändern. Er meldete immer nach dreimal "nein" klicken das ein Fehler auftrat. Habe dann ein bischen herumprobiert und es hinbekommen.
Ich habe diese Zeile:
Set raZelle = .FindNext(raZelle)
geändert in:
Set raZelle = .FindNext(such)
Trotzdem herzlichen Dank
Gruß
Handybike
danke für den Code. Der hat mir sehr geholfen. Musste aber noch eine Kleinigkeit ändern. Er meldete immer nach dreimal "nein" klicken das ein Fehler auftrat. Habe dann ein bischen herumprobiert und es hinbekommen.
Ich habe diese Zeile:
Set raZelle = .FindNext(raZelle)
geändert in:
Set raZelle = .FindNext(such)
Trotzdem herzlichen Dank
Gruß
Handybike