online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Handybike vom 10.01.2019, 19:53 Options

Problem mit der "find" Methode

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


Antwort schreiben

Antwort 1 von Beverly vom 11.01.2019, 17:16 Options

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.2019, 21:05 Options

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

Ähnliche Themen

VBA: Worksheetfunction.substitute
Oli00  17.04.2007 - 129 Hits - 8 Antworten

von benutzer defenierte methode
js_rulez  23.07.2007 - 39 Hits - 4 Antworten

VBA Find-Methode
ignaz  27.11.2007 - 203 Hits - 3 Antworten

Erweiterte Suche sofort anzeigen
ERS  19.12.2007 - 69 Hits -

Lautstärkeregelungs-Mixer problem
Hauckei85  10.06.2008 - 184 Hits -

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026