Diskussionsgruppe: Tabellenkalkulation
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 ´ hier reagiert er nicht darauf wenn ich statt xlPart xlWhole schreibe
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
Von: Handybike Datum: 10.01.2007, 19:53
Antwort 1
von Beverly vom 11.01.2007, 17:16
Hi,
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 vom 17.01.2007, 21:05
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
|
07101
07102
07103
07104
07105
07106
07107
|