View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Constantly Amazed Constantly Amazed is offline
external usenet poster
 
Posts: 41
Default Substituting substrings

Hi Ron

My specification does not cover the case you asked about. I'll have to go
back to my colleague for clarification and get beck to you.

Thanks

G

"Ron Rosenfeld" wrote:

On Mon, 30 Apr 2007 07:24:03 -0700, Constantly Amazed
wrote:

Hi

I need a macro which will search a range of cells containing various data
(product descriptions) and replace certain characters. The extent of the
range is variable so it might be better to select the range before running
the macro.

What I need to do is search each data string and identify if it contains any
of the characters +, ^, %, ~, (, ), {, }, [, ]. Where the data does the
character has to be replaced with {+}, {^} etc wherever it occurs. The new
string, containing any substituted strings, needs to overwrite the original
data contained in the cell to maintain other cell references within the
workbook

Thanks for any help


This Sub will do that on Selection.

Of course, you might want to define your requirements a bit more. What do you
want to do if the string contains (+). Given your specifications, you would
want: (()(+)())

If that's the case, then OK. If not, then ??


=================================================

Sub ReplaceSpecial()
Dim c As Range
Dim oRegex As Object
Const sPattern As String = "([+^%~(){}[\]])"
Const rStr As String = "($1)"

Set oRegex = CreateObject("VBScript.RegExp")
oRegex.IgnoreCase = True
oRegex.Global = True
oRegex.MultiLine = True

oRegex.Pattern = sPattern

For Each c In Selection
With oRegex
If .Test(c.Text) = True Then
c.Value = .Replace(c.Text, rStr)
End If
End With
Next c

End Sub
==================================
--ron