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

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
###-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... :->
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

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige