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

Forumthread: Zeichenfolge in einem String färben

Zeichenfolge in einem String färben
Mandy
Hi,
ich habe eine Spalte mit viele Zellen und Text. Nun möchte ich innerhalb der Spalte alle Zellen durchlaufen und alle Zeichenfolgen "###" rot färben.
Wie kann ich denn das mit einem Makro machen.
Danke
Mandy
Anzeige
###-Zeichenfolge in allen Strings färben
15.09.2009 09:59:36
Luc:-?
Morrn, Mandy!
Dim p As Long, x As Range, sp As Range
Set sp = ActiveSheet.Range("...")
For Each x In sp
p = Instr(x, "###")
If CBool(p) Then _
x.Characters(p, 3).Font.Color = vbRed
Next x

...sollte es tun!
Gruß Luc :-?
@Luc : Und was ist mit "### Text ###" ;-) ?
15.09.2009 10:16:22
NoNet
Hey Luc,
Dein Code färbt ja nur die ersten drei "###" innerhalb der Zelle !
Wenn die Zelle z.B. ### Start ### enthält, sieht das dann so aus : ### Start ###
Hier mein Ergänzungsvorschlag :
Sub DreiRautenRotFaerbenLucUndNoNet()
Dim lngStelle As Long, rngBereich As Range, rngZelle As Range
Set rngBereich = ActiveSheet.Range("A1:D10").SpecialCells(xlCellTypeConstants, 2)
For Each rngZelle In rngBereich
lngStelle = 0
Do
lngStelle = InStr(lngStelle + 1, rngZelle, "###")
If CBool(lngStelle) Then _
rngZelle.Characters(lngStelle, 3).Font.Color = vbRed
Loop Until lngStelle = 0
Next
End Sub

Gruß, NoNet
Anzeige
Tja, eben war noch kein NoNet zu sehen...
15.09.2009 10:31:33
Luc:-?
...und von mehr als 1x ### mussten Micha und ich zuvor auch nicht unbedingt ausgehen,
oller Schlau..., äh, Heidelberger... ;-)
Gruß Luc :-?
PS: Sieh dir doch mal diesen Vorschlag an, auf den eine gewisse Mandy bis dato nicht reagiert hat... :->
Anzeige
Hohe Berge - Tiefe T(el/ä)ler
15.09.2009 10:58:24
NoNet
Hey Luc,
bei uns in HeidelSchlauberg gibt es zwar relativ "hohe" Berge (Bergstrasse, Königstuhl) aber auch tiefe T(ä/el)ler - daher war es für mich in diesem Fall nicht schwierig auch mal über den T(ä/el)lerrand der Fragestellung zu schauen ;-)
Den anderen Thread schaue ich mir gerne mal später an...
Gruß, NoNet
Anzeige
Ja, die tiefen Tell...äler! Hptsache, sie sind...
15.09.2009 11:53:59
Luc:-?
...immer gut gefüllt, nicht wahr, NoNet... ;-)
Gruß Luc :-?
Besser informiert sein...
Genau! - Und zwar die TELLER und die TASSEN ;-)
15.09.2009 12:10:28
NoNet
Eigentlich _oT = "ohne Text" (aber mit Teller und Tassen ;-)
Maahlzeit, NoNet
AW: ###-Zeichenfolge in allen Strings - ergänzt
15.09.2009 10:19:59
Luc:-?
Na dann so (die "schnellere" Vs soll ma' Micha machen, der hat mehr Zeit, Gruß)... ;-)
Dim p As Long, x As Range, sp As Range
Set sp = ActiveSheet.Range("...")
For Each x In sp
p = Instr(x, "###")
If CBool(p) Then
While p > 0
x.Characters(p, 3).Font.Color = vbRed
p = Instr(p + 3, x, "###")
Wend
End If
Next x

Viel Spaß, Luc :-?
Anzeige
AW: Zeichenfolge in einem String färben
15.09.2009 10:03:35
MichaV
Hallo,
hier eine etwas schnellere Variante :o)
Option Explicit
Sub faerben()
Dim Zelle As Range
Dim strStart As String
Const cSuch = "###" 'ggf.anpassen
With Range("H:H") ' Spalte anpassen
Set Zelle = .Find(What:="###", LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Zelle Is Nothing Then Exit Sub
strStart = Zelle.Address
Do
With Zelle.Characters(Start:=InStr(Zelle, cSuch), Length:=3).Font
.ColorIndex = 3
End With
Set Zelle = .FindNext(Zelle)
Loop Until Zelle.Address = strStart
End With
End Sub

Gruß- Micha
Anzeige
AW: Zeichenfolge in einem String färben
15.09.2009 10:08:38
Mandy
HI Micha,
Danke, Ist das richtig, dass sich dabei nur die erste Zeichenfolge färbt. Sorry, ich habe nicht erwähnt, dass sowas auch mehrmals in einer Zelle vorkommen kann. Ist das viel Aufwand ?
GRuss
Mandy
Siehe meine Antwort zu Luc oben _oT
15.09.2009 10:17:31
NoNet
_oT = "ohne Text"
hier mal eine Möglichkeit...
15.09.2009 10:26:53
Tino
Hallo,
versuche es mal hiermit.
Sub FarbeText(sZelle As Range, sBegriff As String, iColor As Integer, booCase As Boolean)
Dim objRegExp As Object, oMatch As Object
    
    Set objRegExp = CreateObject("vbscript.regexp")
    
    With objRegExp
        .Global = True
        .Pattern = sBegriff
        .IgnoreCase = Not booCase
        Set oMatch = .Execute(sZelle.Text)
    End With
     
    
    
    For Each oMatch In oMatch
     sZelle.Characters(Start:=oMatch.FirstIndex + 1, Length:=oMatch.Length).Font.ColorIndex = iColor
    Next oMatch
    
    Set objRegExp = Nothing
    
End Sub

Sub Beispiel()
Dim Bereich As Range
'Bereich anpassen 
Set Bereich = Range("A7", Cells(Rows.Count, 1).End(xlUp))

Bereich.Font.ColorIndex = xlAutomatic

For Each Bereich In Bereich
  If Bereich.Text <> "" Then
    'Zelle; Suchbegriff; Farbindex; Groß u. Kleinschreibung beachten True = Ja 
    FarbeText Bereich, "Hallo", 3, False
  End If
Next Bereich

End Sub
Gruß Tino
Anzeige
Danke Euch drei für die Hilfe :-) owT
15.09.2009 12:33:10
Mandy
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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