View Single Post
  #4   Report Post  
Posted to microsoft.public.word.newusers
macropod[_2_] macropod[_2_] is offline
external usenet poster
 
Posts: 2,059
Default Peculiar search and Replace

Hi Henry,

You're asking for more than the standard Find/Replace functions allow.

The following macro will search the active document for chemical formulae (represented by numbers preceded by a letter or a right
bracket) and subscript just the numbers. Unless you're working with isotopes, the results should be correct - you'll need to apply
the isotope superscripting yourself (if the numbers are already superscripted, they'll be left alone).

If your document has other alphanumeric strings in which a non-superscripted number follows a letter (eg Table cell references), you'll
need to select only the range(s) containing the text to be converted and answer 'No' to the prompt.

Sub ChemicalFormatter()
Dim oRng As Range, fRng As Range, bState As Boolean
Application.ScreenUpdating = False
Select Case MsgBox("Do you want to process the whole document?", _
vbYesNoCancel + vbQuestion, "Chemical Formatter")
Case vbYes
bState = True
Case vbNo
bState = False
Case vbCancel
End
End Select
With Selection
Set oRng = .Range
With .Find
.ClearFormatting
.Text = "[A-Za-z)][0-9]{1,}"
.MatchWildcards = True
.Wrap = wdFindContinue
.Forward = True
Do While .Execute = True
Set fRng = ActiveDocument.Range(Start:=Selection.Start + 1, End:=Selection.End)
If bState = False Then
If fRng.Start = oRng.End Then Exit Do
If fRng.End = oRng.End Then fRng.End = oRng.End
End If
If fRng.Font.Superscript = False Then fRng.Font.Subscript = True
fRng.Collapse Direction:=wdCollapseEnd
Loop
End With
End With
oRng.Select
Set fRng = Nothing
Set oRng = Nothing
Application.ScreenUpdating = True
End Sub

--
Cheers
macropod
[Microsoft MVP - Word]


"Henry Stock" wrote in message ...
I wonder if anyone can help me with the following search and replace.

I want to replace the character string CO2 with the equivalent string except with the 2 subscripted. I tried highlighting the 2
in the replacement string and then selecting special formating and choosing a subscripted font, but that just resulted in the
entire string being subscripted.

I am using Word 2007