Ziel dieses Scriptes
Mit Hilfe dieses Scriptes können Sie nach einem bestimmten Text in Zellen suchen und den gefundenen Text farbig hervorheben. In eine Eingabebox geben Sie den zu suchenden Text ein. Nach der Suche wird eine entsprechende Meldung ausgegeben.
Das Script wurde in die Standard-Prozedur einer Tabelle eingegeben „Worksheet_BeforeDoubleClick“. Klicken sie doppelt in die verwendete Tabelle, wird der eigentliche Doppelklick deaktiviert (Cancel = True) und anschließend das Script ausgeführt.
Folgende Dinge sollte man bei Anwendung des Scriptes berücksichtigen:
- Dieses Script prüft nicht, ob die Tabelle schreibgeschützt ist
- Die While-Wend-Schleife setzt voraus, dass sich alle zu prüfenden Zellen (hier in Spalte 1) unmittelbar untereinander befinden, ohne Leerzeilen
- In einer While-Wend-Schleife sollte immer ein Zähler (hier: Zeile = Zeile + 1) verwendet werden, ansonsten läuft die Schleife immer in der gleichen Zeile, also endlos!
- Trifft die While-Wend-Schleife auf eine leere Zeile, bricht sie die Ausführung des Scriptes ab. Sie funktioniert nur solange, solange sich in der aktuellen Zeile (Zelle…) Inhalt befindet (Cells(Zeile, Spalte).Value <> "")
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'Den "Doppelklick" deaktivieren Cancel = True 'Variablen festlegen Dim Eingabe As String, Inhalt As String Dim Anfang As Integer, Laenge As Integer Dim Zeile As Integer, Spalte As Integer Dim g As Boolean, n As Integer 'Die Eingabebox festlegen Eingabe = InputBox("Geben Sie hier den zu suchenden Text ein," & vbCrLf _ & "der farbig markiert werden soll:", "Geben Sie den zu suchenden Text ein:", "Test") 'Prüfen ob "Abbrechen" angelickt wurde, oder "OK" jedoch ohne Eingabe If Len(Eingabe) = 0 Then 'Wenn keine Eingabe erfolgt ist, dann Prozedur verlassen '(Die Eingabe von "nur Leerzeichen" kann mit Trim(Eingabe) abgefangen werden) Exit Sub Else Application.Screenupate = False 'Zellen in Spalte A: in Schriftfarbe "schwarz" und ohne Fett-Schrift formatieren, 'falls vorher eine Suche druchgeführt wurde With Columns("A:A").Font .Color = RGB(0, 0, 0) 'RGB(0, 0, 0) = schwarz 'oder falls Schriftfarbe in Standard formatiert werden soll: '.ColorIndex = xlAutomatic '.TintAndShade = 0 'Fettschrift ausschalten: .Bold = False End With 'Variablen initialisieren Zeile = 1 Spalte = 1 n = 0 'n = Zähler While Cells(Zeile, Spalte).Value <> "" 'Schleife solange ausführen, 'solange Text in einer Zelle gefunden wird. Bei Leerzeilen stopt das Script. Inhalt = Cells(Zeile, Spalte).Value If InStr(1, Inhalt, Eingabe) > 0 Then g = True 'g bleibt = false, solange der Suchtext nicht gefunden wurde n = n + 1 'Fundstellen zählen 'Erster Buchstabe des gefundenen Textes Anfang = InStr(1, Inhalt, Eingabe, vbTextCompare) 'Anzahl der Buchstaben, die formatiert werden sollen Laenge = Len(Eingabe) 'Den gefundenen Text in der Zelle farbig (rot, fett) hervorheben With Cells(Zeile, Spalte).Characters(Start:=Anfang, Length:=Laenge).Font .Color = RGB(255, 0, 0) '= rot .Bold = True 'Fett-Schrift ein End With End If 'Eine Zeile weiterzählen Zeile = Zeile + 1 Wend Application.Screenupate = True 'Eine entsprechende Meldung ausgeben If g = False Then MsgBox "Der Suchtext """ & Eingabe & """ konnte nicht gefunden werden.", vbExclamation, "Ergebnis:" Else MsgBox "Der Suchtext """ & Eingabe & """ wurde " & n & "x gefunden.", vbInformation, "Ergebnis:" End If End If End Sub
Nach dem Abarbeiten des Scriptes wird eine Meldung ausgegeben:

Ich freue mich über Meinungen, Ideen oder Kritik… schreiben Sie mir eine E-Mail »