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

Wortteil färben (Treffer rot)

Wortteil färben (Treffer rot)
02.12.2015 14:35:28
Dirk
Hallo Euch allen,
mit untenstehendem Code suche ich nach einem Wortteil (Eingabe in B1).
Nun ist aber mein Problem, daß ich z.B. in B1 den Begriff "herb" eintrage und das Makro auch den Treffer "Herber" hervorheben soll - es soll also NICHT zwischen Groß- und Kleinschreibung unterschieden werden.
Wie ist der Code zu ändern?
Freue mich über jeden zielführenden Tipp!
Grüße
Dirk
Code im Tabellenblatt:
Option Explicit Sub treffer_rot() Dim rng As Range Dim i As Integer Dim SuBegr As String 'SuchBegriff Dim SuZeich As Long 'SuchZeichen (Anzahl) SuBegr = Range("b1").Value SuZeich = Len(SuBegr) For Each rng In Range("a2:z20") 'in A2:Z20 i = InStr(rng, SuBegr) If i > 0 Then ' rng.Characters(i, SuZeich).Font.Color = RGB(255, 0, 0) rng.Characters(i, SuZeich).Font.Color = vbRed rng.Characters(i, SuZeich).Font.Bold = True End If Next End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wortteil färben (Treffer rot)
02.12.2015 15:02:23
Beverly
Hi Dirk,
wandle alles in Großbuchstaben (oder Kleinbuchstaben) um:
    If InStr(UCase(rng), UCase(SuBegr)) > 0 Then


gelöst (UCase)
02.12.2015 15:33:39
Dirk
Hallo Karin,
tausend Dank für Deinen Tipp, funktioniert prima !!!
Genau danach suchte ich, Du hast mir den Tag gerettet...
Grüße
Dirk

vbTextCompare
02.12.2015 15:33:17
Rudi
Hallo,
i = InStr(rng, SuBegr, vbTextCompare)
Gruß
Rudi

AW: vbTextCompare
02.12.2015 15:58:23
Dirk
Hallo Rudi,
i = InStr(rng, SuBegr, vbTextCompare)
oder
i = InStr(rng, SuBegr, 1)
liefern leider: Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument...
Kann das daran liegen, daß dieser Code nicht in einem eigenen Modul, sondern im Tabellenblatt steht?
Doch trotzdem vielen Dank für Deinen Vorschlag - ich bin mir sicher, ich setze ihn lediglich nicht richtig um. :-(
MfG
Dirk

Anzeige
geht bei mir auch nicht
02.12.2015 16:08:50
Matthias
Hallo Dirk
Aber mal eine Frage
Bist Du sicher das Du mit dem Code das erreichst was Du willst?
Was ist z.B wenn in einer Zelle im Bereich
beherbergen steht?
oder
Jugendherberge?
Was kommt da bei Dir raus in den gelben Zellen?
Ich dachte Du willst dann "herb" markieren
Tabelle1

 ABC
1 herb 
2Herber.deHerbyJugendherberge
3HerbstHerbstloservollherb
4hartleichtschwer
5beherbergenHerbstanfangherbes Wetter


Excel Tabellen im Web darstellen >>
Excel Jeanie HTML 4

Bei mir das
beherbergen steht?
oder
Jugendherberge?
Gruß Matthias

Anzeige
funzt es jetzt ?
02.12.2015 16:21:47
Dirk
Hallo Matthias,

danke für den Hinweis.
Nur dadurch bin ich auf diesen Makel gestoßen.
Habe das UCase daraufhin schon weiter oben im Code benutzt:
i = InStr(UCase(rng), UCase(SuBegr))
Zwar funktioniert es jetzt auch in dem von Dir geschilderten Fall, aber bitte frag' mich nicht, warum das so ist... Ich bin absoluter VBA-Laie.
Grüße
Dirk

ja klar ...
02.12.2015 16:33:21
Matthias
Hallo
Nee, ich frag Dich nicht warum ;-)
So gehts ja dann auch:
Bereiche hatte ich zum Testen reduziert
Bitte wieder anpassen!
Karins Vorschlag:
Option Explicit
Sub treffer_rot()
Dim rng As Range
Dim i As Integer
Dim SuBegr As String    'SuchBegriff
Dim SuZeich As Long     'SuchZeichen (Anzahl)
SuBegr = Range("b1").Value
SuZeich = Len(SuBegr)
For Each rng In Range("A2:C5")  'in A2:C5
With rng
i = InStr(UCase(.Text), UCase(SuBegr))
If i > 0 Then
.Characters(i, SuZeich).Font.Color = vbRed
.Characters(i, SuZeich).Font.Bold = True
End If
End With
Next
End Sub
oder eben Rudis Vorschlag
Option Explicit
Sub treffer_rot()
Dim rng As Range
Dim i As Integer
Dim SuBegr As String    'SuchBegriff
Dim SuZeich As Long     'SuchZeichen (Anzahl)
SuBegr = Range("b1").Value
SuZeich = Len(SuBegr)
For Each rng In Range("A2:C5")  'in A2:C5
With rng
i = InStr(1, rng, SuBegr, vbTextCompare)
If i > 0 Then
.Characters(i, SuZeich).Font.Color = vbRed
.Characters(i, SuZeich).Font.Bold = True
End If
End With
Next
End Sub
Beides mal in ein With-Konstrukt eingebettet
Gruß Matthias

Anzeige
AW: vbTextCompare
02.12.2015 16:14:25
Rudi
Hallo,
man muss den ersten Parameter auch angeben. Hab ich übersehen.
i = InStr(1,rng, SuBegr, vbTextCompare)
Gruß
Rudi

AW: vbTextCompare
02.12.2015 16:31:55
Dirk
Hallo Rudi,
habe Deine Variante gerade auch nach Matthias' Hinweis getestet.
Und wie von Dir nicht anders zu erwarten, funktioniert es genau wie gewünscht !
Vielen Dank.
MfG
Dirk

mehrere Treffer in einer Zelle
03.12.2015 12:48:13
Dirk
Hallo nochmal,
gerade bin ich über einen Sonderfall gestolpert, der allerdings häufiger vorkommt:
Der Suchbegriff (SuBegr) kann mehrmals in einer ZELLE (rng) stehen.
Momentan wird nur der !. Treffer hervorgehoben, also:
Suchbegriff: herb
Zellinhalt: In der Jugendherberge werden nicht nur Jugendliche beherbergt.
falsches Ergebnis: In der Jugendherberge werden nicht nur Jugendliche beherbergt.
gesuchtes Ergebnis: In der Jugendherberge werden nicht nur Jugendliche beherbergt.
Was muss an diesem Code geändert werden?
Option Explicit
Sub treffer_rot()
Dim rng As Range
Dim i As Integer
Dim SuBegr As String    'SuchBegriff
Dim SuZeich As Long     'SuchZeichen (Anzahl)
SuBegr = Range("b1").Value
SuZeich = Len(SuBegr)
For Each rng In Range("A2:C5")  'in A2:C5
With rng                                   'von Matthias L.
i = InStr(UCase(.TEXT), UCase(SuBegr))     'von Beverly
i = InStr(1, rng, SuBegr, vbTextCompare)   'von Rudi Maintaire
If i > 0 Then
.Characters(i, SuZeich).Font.Color = vbRed
.Characters(i, SuZeich).Font.Bold = True
End If
End With
Next
End Sub
Grüße
Dirk
OffTopic: Wie kann man hier im Forum Text rot darstellen?

Anzeige
AW: mehrere Treffer in einer Zelle
03.12.2015 16:30:36
Rudi
Hallo,
dann musst du mit einer Schleife durch den Text.
Motto:
for i=1 to len(rng)-SuZeich+1
if lcase(mid(rng,i,SuZeich))=lcase(subegr) then
rng.Characters(i, SuZeich).Font.Color = vbRed
end if
next
Gruß
Rudi

AW: mehrere Treffer in einer Zelle
03.12.2015 18:15:40
Dirk
Hallo Rudi,
danke Dir vielmals - PROBLEM GELÖST !!!
Hast Du noch einen Tipp oder Link zu meiner OffTopic-Frage?
MfG
Dirk

erledigt
03.12.2015 18:47:16
Dirk
sorry, hab's gerade gefunden:
" rote Schrift "
oder
" rote Schrift "
(ohne Leerzeichen nach den KleinerAls-Zeichen
rote Schrift

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige