![]() |
#1
|
|||
|
|||
![]()
I have some code that formats text before a colon bold for definitions. I'm currently working on a document where there are square brackets and/or opening brackets at the beginning of the paragraph before the colon but the code isn't making the text bold. I did try adding ([\(\[\]) but this didn't work. Any ideas?
Definitions.JPG Code:
Set oRng = ActiveDocument.Range With oRng.Find .ClearFormatting .Forward = True .Wrap = wdFindStop .Format = True .MatchWildcards = True .Replacement.ClearFormatting 'Find text before first tab or colon and format bold .text = "([a-zA-Z0-9][!^13]@)([^t:])" While .Execute If oRng.Characters(1).Start = oRng.Paragraphs(1).Range.Characters(1).Start Then oRng.Select oRng.Font.Bold = True If Not oRng.Characters.Last.Next = vbTab Then oRng.text = Replace(oRng.text, ":", vbTab) Else oRng.Characters.Last.Delete End If End If Wend End With |
#2
|
|||
|
|||
![]()
Hi, Shelley Lou! If need be, change selection to ActiveDocument.
Code:
Sub Embolden_Rng_1() 'Embolden strings including colons. Dim oRng As range Set oRng = selection.range With oRng.Find .ClearFormatting .Replacement.ClearFormatting .Forward = True .Wrap = wdFindStop .Format = True .MatchWildcards = True 'Find text from a para start until the 1st tab or colon (including): .text = "^13[!^13]@[^t:]" .Replacement.Font.Bold = True .Execute Replace:=wdReplaceAll End With Set oRng = Nothing End Sub Code:
Sub Embolden_Rng_2() 'Embolden strings excluding colons. Dim oRng As range Set oRng = selection.range With oRng.Find .ClearFormatting .Replacement.ClearFormatting .Forward = True .Wrap = wdFindStop .Format = True .MatchWildcards = True 'Find text from a para start until the 1st tab or colon: .text = "(^13[!^13]@)([^t:])" While .Execute And oRng.InRange(selection.range) oRng.End = oRng.End - 1 oRng.Font.Bold = True oRng.Collapse wdCollapseEnd Wend End With Set oRng = Nothing End Sub Code:
Sub Embolden_Rng_3() 'Embolden strings from para starts until 1st colon/tab '(excluding colons & possible starting round/square brackets). Dim oRng As range Set oRng = selection.range With oRng.Find .ClearFormatting .Replacement.ClearFormatting .Forward = True .Wrap = wdFindStop .Format = True .MatchWildcards = True 'Find text from a para start until 1st tab/colon: .text = "(^13[!^13]@)([^t:])" While .Execute And oRng.InRange(selection.range) If oRng.Characters(2) Like "[\(\[]" Then oRng.start = oRng.start + 2 oRng.End = oRng.End - 1 oRng.Font.Bold = True oRng.Collapse wdCollapseEnd Wend End With Set oRng = Nothing End Sub |
#3
|
|||
|
|||
![]()
Hi Vivka, thanks so much for your code - unfortunately not what I needed it to do on this occasion but I did take part of your code "([!^13]@)([^t:])" in place of what was in my original code and that has worked how I need it to so really appreciate that.
Code:
Set oRng = ActiveDocument.Range With oRng.Find .ClearFormatting .Forward = True .Wrap = wdFindStop .Format = True .MatchWildcards = True .Replacement.ClearFormatting 'Find text before first tab or colon and format bold .text = "([!^13]@)([^t:])" While .Execute If oRng.Characters(1).Start = oRng.Paragraphs(1).Range.Characters(1).Start Then oRng.Select oRng.Font.Bold = True If Not oRng.Characters.Last.Next = vbTab Then oRng.text = Replace(oRng.text, ":", vbTab) Else oRng.Characters.Last.Delete End If End If Wend End With |
#4
|
|||
|
|||
![]()
I'm glad you managed to solve your problem! My final remark: 'oRng.Select' seems redundant.
|
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
Shelley Lou | Word VBA | 13 | 06-25-2021 12:41 AM |
![]() |
Dave T | Word VBA | 2 | 04-28-2019 11:00 PM |
Conditional format for NCAA bracket | JoemanNville | Excel | 0 | 03-25-2019 01:45 PM |
![]() |
jeffreybrown | Word VBA | 8 | 12-04-2018 06:01 PM |
Word 2010 - Remove square-bracket encased string in large document | IntestinalWorm | Word | 1 | 06-20-2017 01:14 AM |