Change color of certain characters in a cell Change color of certain characters in a cell vba vba

Change color of certain characters in a cell


You can use the characters(start, length) property to do this. You can also store the text in a string and loop on that, which will be faster when you work with many cells. Here is an example:

Sub RedText()Dim i As LongDim text As Stringtext = Cells(1, 1).ValueFor i = 1 To Len(text)    If IsNumeric(Mid$(text, i, 1)) = True Then        Cells(1, 1).Characters(i, 1).Font.Color = vbRed    End IfNextEnd Sub


You can use a RegExp for the same effect.

The advantage of the Regex approach being the code will isolate immediately any groups of numeric characters (or skip any strings that have no numerics) rather than testing each individual character.

So it offers a speed advantage if you are processing reasonably large data sets

Sub RegExpRed()    Dim objRegex As Object    Dim RegMC As Object    Dim RegM As Object    Set objRegex = CreateObject("vbscript.regexp")    With objRegex        .Global = True        .Pattern = "\d+"        If .test(Cells(1, 1).Value) Then            Set RegMC = .Execute(Cells(1, 1).Value)            For Each RegM In RegMC                Cells(1, 1).Characters(RegM.FirstIndex + 1, RegM.Length).Font.Color = vbRed            Next        End If    End WithEnd Sub