Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1596to1600
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

Suchbegriffe einfärben

Suchbegriffe einfärben
14.12.2017 10:50:35
alex
Hallo liebe Gemeinde,
ich habe ein Protokoll und bin dank der Leute aus diesem Forum in der Lage in einer Textbox mehrere Begriffe zu suchen und diese in den Zeilen rot einzufärben.
Das funktioniert blendend - habe darüber hinaus einen autofilter drüber gesetzt damit die betreffenden zeilen rausgesucht werden.
Der Code ist folgender:

Sub Suchen()
Dim strFind$, myFind, firstAdd$, i&
Dim strTemp$
Dim Beginn As Integer, Anzahl As Integer, j As Integer
Range("U4000:U4003").ClearContents
Range("A1:S2").Select
Range("A2").Activate
Selection.AutoFilter
ActiveSheet.UsedRange.Font.ColorIndex = xlAutomatic
strFind$ = InputBox("Bitte geben Sie die Suchbegriffe ein." & vbNewLine _
& "Trennen Sie die Suchbegriffe mit einem Schrägstrich  / ", "Suche")
If strFind$ = vbNullString Then Exit Sub
For i = LBound(Split(strFind$, "/")) To UBound(Split(strFind$, "/"))
strTemp$ = Trim(Split(strFind$, "/")(i))
Set myFind = Cells.Find(strTemp$, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
If Not myFind Is Nothing Then
firstAdd$ = myFind.Address
Do
Anzahl = (Len(myFind) - Len(Replace(myFind, strTemp$, ""))) / Len(strTemp)
Beginn = 0
For j = 1 To Anzahl
Beginn = InStr(Beginn + 1, myFind.Value, strTemp$)
myFind.Characters(Start:=Beginn, Length:=Len(strTemp$)).Font.Color = vbRed
Next j
Set myFind = Cells.FindNext(myFind)
Loop While myFind.Address  firstAdd$
End If
Range("U4000").Offset(i, 0).Value = strTemp
Next i
Range("A1:S2").Select
Range("A2").Activate
Selection.AutoFilter
ActiveSheet.Range("$A$1:$S$10000").AutoFilter Field:=1, Criteria1:="=1", _
Operator:=xlOr, Criteria2:="="
End Sub

Jetzt ist es so, dass wenn ich nach bspl. "Lüftung" suche, dann findet er dieses Wort auch wenn es kleingeschrieben ist (was erwünscht ist).
ABER: Es wird nicht rot makiert (logisch, gibt der Code ja auch nicht her bislang)
Gibt es hier eine praktikable Lösung, dass unabhängig von gross/kleinschreibung alle Wörter (korrekt geschrieben !) die gesucht werden rot gefärbt werden. - selbst wenn ich beispl. "lÜFTUNG" schreibe.
Danke im vorraus
LG Alex

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchbegriffe einfärben
14.12.2017 11:28:31
Daniel
Hi
du kannst die Instr-Funktion zum Finden der Wörter im Text anweisen, ebenfalls nicht auf Groß/Kleinschreibung zu achten:
Beginn = InStr(Beginn + 1, myFind.Value, strTemp$, vbTextCompare)
oder du Wandelst in beiden Texten alle Buchstaben in Kleinbuchstaben um (mit Großbuchstaben ginge es genauso
Beginn = InStr(Beginn + 1, LCase(myFind.Value), LCase(strTemp$))

Gruß Daniel
AW: Suchbegriffe einfärben
14.12.2017 11:52:31
alex
Hallo Daniel,
hab
Beginn = InStr(Beginn + 1, myFind.Value, strTemp$, vbTextCompare)
in den Code integriert und erhalte Laufzeitfehler 424
Objekt erforderlich

Sub Suchen()
Dim strFind$, myFind, firstAdd$, i&
Dim strTemp$
Dim Beginn As Integer, Anzahl As Integer, j As Integer
Range("U4000:U4003").ClearContents
Range("A1:S2").Select
Range("A2").Activate
Selection.AutoFilter
ActiveSheet.UsedRange.Font.ColorIndex = xlAutomatic
strFind$ = InputBox("Bitte geben Sie die Suchbegriffe ein." & vbNewLine _
& "Trennen Sie die Suchbegriffe mit einem Schrägstrich  / ", "Suche")
Beginn = InStr(Beginn + 1, myFind.Value, strTemp$, vbTextCompare)
If strFind$ = vbNullString Then Exit Sub
For i = LBound(Split(strFind$, "/")) To UBound(Split(strFind$, "/"))
strTemp$ = Trim(Split(strFind$, "/")(i))
Set myFind = Cells.Find(strTemp$, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
If Not myFind Is Nothing Then
firstAdd$ = myFind.Address
Do
Anzahl = (Len(myFind) - Len(Replace(myFind, strTemp$, ""))) / Len(strTemp)
Beginn = 0
For j = 1 To Anzahl
Beginn = InStr(Beginn + 1, myFind.Value, strTemp$)
myFind.Characters(Start:=Beginn, Length:=Len(strTemp$)).Font.Color = vbRed
Next j
Set myFind = Cells.FindNext(myFind)
Loop While myFind.Address  firstAdd$
End If
Range("U4000").Offset(i, 0).Value = strTemp
Next i
Range("A1:S2").Select
Range("A2").Activate
Selection.AutoFilter
ActiveSheet.Range("$A$1:$S$10000").AutoFilter Field:=1, Criteria1:="=1", _
Operator:=xlOr, Criteria2:="="
End Sub

Anzeige
AW: Suchbegriffe einfärben
14.12.2017 12:17:29
Daniel
Hi
naja, du musst dir schon ein paar Gedanken dazu machen, an welcher stelle du das einfügst und warum.
Außerdem musst du keine neue Programmzeile einfügen, du hast ja schon eine Zeile mit Beginn = Instr(...).
Diese Zeile musst du einfach nur so abändern, wie ich es dir gezeigt habe.
Gruß Daniel
AW: Suchbegriffe einfärben
14.12.2017 12:42:50
alex
Hallo Daniel,
sorry, ich wollte es mir zu einfach machen.
hab jetzt genauer hingeschaut und "vbTextCompare" in den bestehenden Code eingesetzt:

Sub Suchen()
Dim strFind$, myFind, firstAdd$, i&
Dim strTemp$
Dim Beginn As Integer, Anzahl As Integer, j As Integer
Range("Q4000:Q4003").ClearContents
Range("A1:O2").Select
Range("A2").Activate
Selection.AutoFilter
ActiveSheet.UsedRange.Font.ColorIndex = xlAutomatic
strFind$ = InputBox("Bitte geben Sie die Suchbegriffe ein." & vbNewLine _
& "Trennen Sie die Suchbegriffe mit einem Schrägstrich  / ", "Suche")
If strFind$ = vbNullString Then Exit Sub
For i = LBound(Split(strFind$, "/")) To UBound(Split(strFind$, "/"))
strTemp$ = Trim(Split(strFind$, "/")(i))
Set myFind = Cells.Find(strTemp$, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
If Not myFind Is Nothing Then
firstAdd$ = myFind.Address
Do
Anzahl = (Len(myFind) - Len(Replace(myFind, strTemp$, ""))) / Len(strTemp)
Beginn = 0
For j = 1 To Anzahl
Beginn = InStr(Beginn + 1, myFind.Value, strTemp$, vbTextCompare)
myFind.Characters(Start:=Beginn, Length:=Len(strTemp$)).Font.Color = vbRed
Next j
Set myFind = Cells.FindNext(myFind)
Loop While myFind.Address  firstAdd$
End If
Range("Q4000").Offset(i, 0).Value = strTemp
Next i
Range("A1:O2").Select
Range("A2").Activate
Selection.AutoFilter
ActiveSheet.Range("$A$1:$O$10000").AutoFilter Field:=1, Criteria1:="=1", _
Operator:=xlOr, Criteria2:="="
End Sub
Es erscheint kein Fehler mehr - trotzdem färbt er nicht alle Wörter unabhängig der Schreibung.
habe die Datei stark verkürzt im Anhang.
https://www.herber.de/bbs/user/118325.xlsm
Anzeige
AW: Suchbegriffe einfärben
14.12.2017 15:39:24
Daniel
Hi
die Replace-Funktion ist anscheinend auch Case-Sensitiv.
hier musst du dann auch die Schreibweise in beiden Texten auf Klein- oder Großbuchstaben setzen (LCase)
wobei ich die Ermittlung, wie oft ein Wort im Text vorkommt (Anzahl = ...) weglassen würde, sondern hier einfach per DO-Schleife durch den Text gehen, bis das InStr eine 0 als Ergebnis ausgibt
    If Not myFind Is Nothing Then
firstAdd$ = myFind.Address
Do
Beginn = 0
Do
Beginn = InStr(Beginn + 1, myFind.Value, strTemp$, vbTextCompare)
If Beginn = 0 Then Exit Do
myFind.Characters(Start:=Beginn, Length:=Len(strTemp$)).Font.Color = vbRed
Loop
Set myFind = Cells.FindNext(myFind)
Loop While myFind.Address  firstAdd$
End If
Gruß Daniel
Anzeige
AW: Suchbegriffe einfärben
15.12.2017 14:31:07
alex
Ich danke dir vielmals :)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige