ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Find and Replace formatting formats the ENTIRE cell (https://www.excelbanter.com/excel-discussion-misc-queries/138874-find-replace-formatting-formats-entire-cell.html)

Duy Nguyen

Find and Replace formatting formats the ENTIRE cell
 
How do you use the Find and Replace feature that finds a particular word from
within a cell, in this case "(box)." I want to bold just that text and not
the entire cell.

When trying to do so, it formats the entire cell and not just the text I
want. Excel 2003. Anyone?

Duy Nguyen

Find and Replace formatting formats the ENTIRE cell
 
Does anyone know if I need to create a macro for this? If so, how do I? I
have never done any programming in Excel before.

"Duy Nguyen" wrote:

How do you use the Find and Replace feature that finds a particular word from
within a cell, in this case "(box)." I want to bold just that text and not
the entire cell.

When trying to do so, it formats the entire cell and not just the text I
want. Excel 2003. Anyone?


Dave Peterson

Find and Replace formatting formats the ENTIRE cell
 
Saved from a previous post:

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
With myCell.Characters(Start:=cCtr, _
Length:=Len(myWords(iCtr)))
.Font.ColorIndex = 3
.Font.Bold = True
End With
End If
Next cCtr
Next myCell
End If
Next iCtr
Application.ScreenUpdating = True

End Sub

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

This portion:

With myCell.Characters(Start:=cCtr, _
Length:=Len(myWords(iCtr)))
.Font.ColorIndex = 3
.Font.Bold = True
End With

Changes the color and the boldness.

You may want to save first--so you can close without saving if you don't want to
keep the formatting changes. Remember this kind of formatting only works on
text cells--not formulas--not numbers.


Duy Nguyen wrote:

Does anyone know if I need to create a macro for this? If so, how do I? I
have never done any programming in Excel before.

"Duy Nguyen" wrote:

How do you use the Find and Replace feature that finds a particular word from
within a cell, in this case "(box)." I want to bold just that text and not
the entire cell.

When trying to do so, it formats the entire cell and not just the text I
want. Excel 2003. Anyone?


--

Dave Peterson


All times are GMT +1. The time now is 02:02 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com