Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
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
Wort suchen und markieren
07.12.2017 10:41:42
alex
Hallo liebe Gemeinde,
stehe vor folgendem Problem.
Ich habe ein Protokoll. In diesem möchte ich x-beliebige Wörter suchen und diese bei Treffer farblich markieren.
Ich bin mittlerweile nach reichlich Recherche so weit das ich Wörter suchen kann und finde, mir aber dann alle Wörter in dieser Zelle markiert werden - ich benötige nur das Suchwort farbig.
Mein Ansatz ist folgender

Option Explicit
Sub Suchen()
Dim strFind$, myFind, firstAdd$, i&
Dim strTemp$
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
Range(myFind.Address).Font.Color = vbRed
Set myFind = Cells.FindNext(myFind)
Loop While myFind.Address  firstAdd$
End If
Next i
End Sub
Das klappt super.
Ich scheitere im Folgenden daran, dass ich bei erneutem Aufruf des Makros keinen "Reset" hinbekomme - ergo alles auf Anfang, unabhängig ob ich dann wirklich was suche oder nicht.
Ich habe mir eine kleine Hilfsfunktion (Spalte A)gebastelt mit Abfrage ob in der vorliegenden Zeile der Suchbegriff vorkommt(schreibe "1") oder nicht (schreibe "0").
Grund dafür ist die Überlegung einer autofilter funktion im VBA code nach Erfolgter such.
Da kommt dann direkt das nächste Problem da ich in der Textbox die Suchbegriffe eingebe und meine Hilfsfunktion ja gar nicht weiss welches Wort ich suche...
Ich habe die Datei im Anhang (stark verkürzt angehangen zur Verdeutlichung.)
In B2:E2 stehen die Suchbegriffe die bei der Textboxeingabe irgendwie dahin müssen.
Ich hoffe ihr könnt mir aus der Patsche helfen.
Liebe grüße
alex
https://www.herber.de/bbs/user/118162.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: Wort suchen und markieren
07.12.2017 11:32:54
Robert
Hallo alex,
ich habe Dein Makro mal etwas angepasst (rot markiert):
Sub Suchen2()
Dim strFind$, myFind, firstAdd$, i&
Dim strTemp$
Dim Beginn As Integer, Anzahl As Integer, j As Integer
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
Next i
End Sub
Am Anfang werden alle roten Markierungen entfernt, dann werden die einzelnen Vorkommen der Suchwerte gesucht und rot markiert.
Gruß
Robert
Anzeige
AW: Wort suchen und markieren
07.12.2017 12:23:59
alex
Fantastisch das Funktioniert ja super!
Das mit dem Autofilter habe ich bereits irgendwie selbst hinbekommen.
Jetzt bräuchte ich nur noch die Codezeile, das mir das was ich Suche und in die Textbox schreibe auch in das Arbeitsblatt geschrieben wird.
Vielen Dank schonmal Robert!
LG
alex
AW: Wort suchen und markieren
07.12.2017 14:12:38
Jürgen
Hallo Robert,
das Wort aus der Inputbox (,das du ja schon in der Variable strFind$ hast,)in eine Zelle zu schreiben ist einfach!
range("A2").value = strFind$
Jetzt nur noch die Zelle aussuchen.
Gruß
Jürgen
AW: Wort suchen und markieren
07.12.2017 14:15:42
alex
Hallo Jürgen,
soweit war ich schon.
Problemartisch wird es wenn ich mehr als einen Suchbegriff benutze da er mir dann nur das letzte gesuchte Wort auswirft
Gruß
Alex
Anzeige
AW: Wort suchen und markieren
07.12.2017 14:48:03
Daniel
Hi
hast du strFind oder strTemp verwendet?
strTemp enthält nach der Schleife nur den letzten Suchbegriff
strFind müsste noch den gesamten Text enthalten, so wie er eingegeben wurde
dh wenn du alle Suchbegriffe in einer Zelle haben willst:
    ...
Next i
Range("A2").value = strFind
end Sub
wenn jeder Suchbegriff in eine eigene Zelle soll:
   ...
Range("A2").Offset(i, 0).Value = strTemp
Next
end Sub
Gruß Daniel
AW: Wort suchen und markieren
07.12.2017 15:52:15
alex
Das ist es!
Vielen Dank an alle - wieder etwas gelernt :)
Liebe Grüße
alex
Anzeige

210 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige