+ Reply to Thread
Results 1 to 2 of 2

Coloring words within the text of cells

  1. #1
    Registered User
    Join Date
    03-09-2006
    Posts
    1

    Coloring words within the text of cells

    Hi!

    I have a spreadsheet with cells that contain text, and I want to color some words within the cells. For example, I want to color the word "sample", whereever it occurs within the text of a cell. Now, if there were only one word per cell, I could use conditional formatting, but as it is, I'm stumped. Does anyone know how to do this?

    Thanks,

    Ole

  2. #2
    Dave Peterson
    Guest

    Re: Coloring words within the text of cells

    Saved from a previous post:

    If you have a list of words you know you want to highlight, you could use a
    macro to cycle through all the words:

    Option Explicit
    Option Compare Text
    Sub testme()

    Application.ScreenUpdating = False

    Dim myWords As Variant
    Dim myRng As Range
    Dim foundCell As Range
    Dim iCtr As Long 'word counter
    Dim cCtr As Long 'character counter
    Dim FirstAddress As String
    Dim AllFoundCells As Range
    Dim myCell As Range

    'add other words here
    myWords = Array("widgets","assemblies","another","word","here")

    Set myRng = Selection

    On Error Resume Next
    Set myRng = Intersect(myRng, _
    myRng.Cells.SpecialCells(xlCellTypeConstants, xlTextValues))
    On Error GoTo 0

    If myRng Is Nothing Then
    MsgBox "Please choose a range that contains text constants!"
    Exit Sub
    End If

    For iCtr = LBound(myWords) To UBound(myWords)
    FirstAddress = ""
    Set foundCell = Nothing
    With myRng
    Set foundCell = .Find(what:=myWords(iCtr), _
    LookIn:=xlValues, lookat:=xlPart, _
    after:=.Cells(.Cells.Count))

    If foundCell Is Nothing Then
    MsgBox myWords(iCtr) & " wasn't found!"
    Else
    Set AllFoundCells = foundCell
    FirstAddress = foundCell.Address
    Do
    If AllFoundCells Is Nothing Then
    Set AllFoundCells = foundCell
    Else
    Set AllFoundCells = Union(foundCell, AllFoundCells)
    End If
    Set foundCell = .FindNext(foundCell)

    Loop While Not foundCell Is Nothing _
    And foundCell.Address <> FirstAddress
    End If

    End With

    If AllFoundCells Is Nothing Then
    'do nothing
    Else
    For Each myCell In AllFoundCells.Cells
    For cCtr = 1 To Len(myCell.Value)
    If Mid(myCell.Value, cCtr, Len(myWords(iCtr))) _
    = myWords(iCtr) Then
    myCell.Characters(Start:=cCtr, _
    Length:=Len(myWords(iCtr))) _
    .Font.colorindex = 3
    End If
    Next cCtr
    Next myCell
    End If
    Next iCtr
    Application.ScreenUpdating = True

    End Sub

    This line:
    myCell.Characters(Start:=cCtr, _
    Length:=Len(myWords(iCtr))) _
    .Font.colorindex = 3
    changes the color.



    If you're new to macros, you may want to read David McRitchie's intro at:
    http://www.mvps.org/dmcritchie/excel/getstarted.htm

    Ole wrote:
    >
    > Hi!
    >
    > I have a spreadsheet with cells that contain text, and I want to color
    > some words within the cells. For example, I want to color the word
    > "sample", whereever it occurs within the text of a cell. Now, if there
    > were only one word per cell, I could use conditional formatting, but as
    > it is, I'm stumped. Does anyone know how to do this?
    >
    > Thanks,
    >
    > Ole
    >
    > --
    > Ole
    > ------------------------------------------------------------------------
    > Ole's Profile: http://www.excelforum.com/member.php...o&userid=32292
    > View this thread: http://www.excelforum.com/showthread...hreadid=520464


    --

    Dave Peterson

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1