Macro for bolding and italicizing word strings

  • Thread starter Thread starter suestew
  • Start date Start date
S

suestew

I want to bold and italicize every word that comes directly before or after
"v."

For example, my sheet is full of cases cited as "Smith v. Jones" etc. I
want everything on each side of "v." to be bolded and italicized, including
the "v."
 
Hi,

I hope it's a typo and you don't want the v in italics because I just read
your post again before replying and the first part contradicts the last.
having written the code I'll post it anyway. Alt +F11 to open VB editor,
right click 'This workbook' and insert module and paste this in and run it

Sub Prime_Lending()
For Each c In ActiveSheet.UsedRange
If WorksheetFunction.IsText(c) Then
Findv = InStr(UCase(c.Value), "V")
If Findv <= 1 Then GoTo getmeout
If Mid(c.Value, Findv - 1, 1) <> " " And Mid(c.Value, _
Findv + 1, 1) <> " " Then GoTo getmeout
With c.Characters(Start:=1, Length:=Len(c.Value)).Font
.FontStyle = "Bold Italic"
End With
With c.Characters(Start:=Findv, Length:=1).Font
.FontStyle = "Regular"
End With
End If
getmeout:
Next
End Sub

Mike
 
I ran your macro and it bolded and italicized all the words in the same cell
as a "v". I don't think you accounted for the period after the v. in "v."

How do I undo a macro?
 
I want to bold and italicize every word that comes directly before or after
"v."

For example, my sheet is full of cases cited as "Smith v. Jones" etc. I
want everything on each side of "v." to be bolded and italicized, including
the "v."

Your description is a bit confusing.

If the case description occupies the entire cell, you could use conditional
formatting.

--ron
 
Hi,

What it does is look for a V that isn't the first letter in a cell. It then
checks there is a space both before and after the v and then bolds/italicises
the parts before and after the v. the font for the v is left as normal.

Your correct I didn't account for the period I missed that but all that
means is the period will be bold and the code revision below cures that. If
it isn't doing that for you then I'm confused. Post some sample data.

Sub Prime_Lending()
For Each c In ActiveSheet.UsedRange
If WorksheetFunction.IsText(c) Then
Findv = InStr(UCase(c.Value), "V")
If Findv <= 1 Then GoTo getmeout
If Mid(c.Value, Findv - 1, 1) <> " " Or Mid(c.Value, _
Findv + 1, 1) <> " " And Mid(c.Value, Findv + 1, 1) <> _
"." Then GoTo getmeout
With c.Characters(Start:=1, Length:=Len(c.Value)).Font
.FontStyle = "Bold Italic"
End With
With c.Characters(Start:=Findv, Length:=2).Font
.FontStyle = "Regular"
End With
End If
getmeout:
Next
End Sub

Mike
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top