Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wort suchen und markieren

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
Anzeige

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
Anzeige
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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Wörter in Excel suchen und farbig markieren


Schritt-für-Schritt-Anleitung

Um Wörter in Excel zu suchen und sie farbig zu markieren, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsblatt)“, wähle „Einfügen“ und dann „Modul“.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    Sub Suchen()
        Dim strFind$, myFind, firstAdd$, i&
        Dim strTemp$
        ActiveSheet.UsedRange.Font.ColorIndex = xlAutomatic ' Reset der Schriftfarbe
        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
                    myFind.Font.Color = vbRed ' Farbliche Markierung
                    Set myFind = Cells.FindNext(myFind)
                Loop While myFind.Address <> firstAdd$
            End If
        Next i
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle „Suchen“ und klicke auf „Ausführen“.

  5. Suchbegriffe eingeben: Gib die Wörter ein, die du suchen möchtest, getrennt durch einen Schrägstrich (z.B. „Wort1/Wort2“).


Häufige Fehler und Lösungen

Problem: Alle Wörter in einer Zelle werden markiert, nicht nur das Suchwort.
Lösung: Stelle sicher, dass du die myFind.Characters-Methode verwendest, um nur das spezifische Wort zu markieren.

Problem: Bei erneutem Aufruf des Makros bleibt die vorherige Markierung bestehen.
Lösung: Füge am Anfang des Makros eine Zeile hinzu, um alle Schriftfarben zurückzusetzen:

ActiveSheet.UsedRange.Font.ColorIndex = xlAutomatic

Alternative Methoden

Eine alternative Methode zum Suchen und Markieren von bestimmten Wörtern in Excel ist die Verwendung von bedingter Formatierung. Hier ist, wie du das tun kannst:

  1. Markiere den Zellbereich, in dem du nach Wörtern suchen möchtest.
  2. Gehe zu „Start“ > „Bedingte Formatierung“ > „Neue Regel“.
  3. Wähle „Formel zur Ermittlung der zu formatierenden Zellen verwenden“.
  4. Gib eine Formel ein, um das Wort zu suchen, z.B.:
    =SUCHEN("Wort", A1)
  5. Wähle die Formatierung (z.B. Schriftfarbe) aus und klicke auf „OK“.

Praktische Beispiele

  1. Beispiel 1: Du möchtest das Wort „Bericht“ in einer Liste von Protokollen suchen und rot markieren. Verwende das Makro und gib „Bericht“ in die Inputbox ein.

  2. Beispiel 2: Um mehrere Wörter zu suchen, gebe „Bericht/Woche“ in die Inputbox ein. Beide Wörter werden rot hervorgehoben.


Tipps für Profis

  • Experimentiere mit verschiedenen Farbcodes, um die Sichtbarkeit zu erhöhen. Du kannst vbRed durch andere VBA-Farbcodes ersetzen.
  • Wenn du viele Suchbegriffe hast, überlege, sie in einer separaten Zelle einzugeben und das Makro entsprechend anzupassen.
  • Nutze die Find-Methode effizient, um die Suche in großen Datenmengen zu optimieren.

FAQ: Häufige Fragen

1. Frage
Wie kann ich das Suchwort in eine bestimmte Zelle schreiben?
Antwort
Verwende den Befehl:

Range("A2").Value = strFind$

Das wird das Suchwort in Zelle A2 speichern.

2. Frage
Was mache ich, wenn ich mehr als ein Wort eingebe und nur das letzte Wort angezeigt wird?
Antwort
Stelle sicher, dass du strFind verwendest, um alle Suchbegriffe zu speichern, und nicht strTemp, das nur das letzte Wort enthält.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige