Consulting

Results 1 to 9 of 9

Thread: bold everything in paragraph until find: ( or -

  1. #1
    VBAX Regular
    Joined
    Jan 2018
    Posts
    58
    Location

    bold everything in paragraph until find: ( or -

    Hi,
    I need a macro wich is bold everything in every paragraph until find: "(" or "-".
    E.g.:Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do (eiusmod tempor incididunt ut labore et dolore magna aliqua.
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut - aliquip ex ea commodo consequat.
    Many Thanks

  2. #2
    Knowledge Base Approver VBAX Guru macropod's Avatar
    Joined
    Jul 2008
    Posts
    4,435
    Location
    Try:
    Sub Demo()
    Application.ScreenUpdating = False
    With ActiveDocument.Range
      With .Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "[!\(\-]{1,}"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchWildcards = True
        .Execute
      End With
      Do While .Find.Found
        Do While InStr(.Text, vbCr) > 0
          .MoveStartUntil vbCr, wdForward
          .Start = .Start + 1
        Loop
        If .Text = "" Then Exit Do
        If .End = ActiveDocument.Range.End Then Exit Sub
        .Font.Bold = True
        .Collapse wdCollapseEnd
        .Find.Execute
      Loop
    End With
    Application.ScreenUpdating = True
    End Sub
    Cheers
    Paul Edstein
    [Fmr MS MVP - Word]

  3. #3
    VBAX Regular
    Joined
    Jan 2018
    Posts
    58
    Location
    It stops on:
    .Execute
    with error 5560

  4. #4
    VBAX Expert
    Joined
    Sep 2016
    Posts
    788
    Location
    Sub test()
        
        ActiveDocument.Range(0, 0).Text = vbCr
      
        With ActiveDocument.Range.Find
            .MatchWildcards = True
            
            .Text = "^13[!^13]@[\(\-]"
            .Replacement.Font.Bold = True
            .Execute Replace:=wdReplaceAll
            
            .Text = "[\(\-]"
            .Font.Bold = True
            .Replacement.Font.Bold = False
            .Execute Replace:=wdReplaceAll
    
    
        End With
            
        ActiveDocument.Range(0, 0).Delete
        
    End Sub
    マナ

  5. #5
    VBAX Regular
    Joined
    Jan 2018
    Posts
    58
    Location
    Thanks mana, it works but only when "(" and "-" is occur.
    I want to bold whole paragraph if mentioned sign not occur in paragraph, so again e.g.:
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do (eiusmod tempor incididunt ut labore et dolore magna aliqua
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut - aliquip ex ea commodo consequat
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat



  6. #6
    How about

    Sub Macro1()
    Dim oRng As Range
        Set oRng = ActiveDocument.Range
        oRng.Font.Bold = True
        With oRng.Find
            Do While .Execute(FindText:=" (")
                oRng.End = oRng.Paragraphs(1).Range.End - 1
                oRng.Start = oRng.Start + 1
                oRng.Font.Bold = False
                oRng.Collapse 0
            Loop
        End With
        Set oRng = ActiveDocument.Range
        With oRng.Find
            Do While .Execute(FindText:=" - ")
                oRng.End = oRng.Paragraphs(1).Range.End - 1
                oRng.Start = oRng.Start + 1
                oRng.Font.Bold = False
                oRng.Collapse 0
            Loop
        End With
    lbl_Exit:
        Set oRng = Nothing
        Exit Sub
    End Sub
    Graham Mayor - MS MVP (Word) 2002-2019
    Visit my web site for more programming tips and ready made processes
    http://www.gmayor.com

  7. #7
    VBAX Expert
    Joined
    Sep 2016
    Posts
    788
    Location
    Sub test2()
        Dim r As Range
        
        Set r = ActiveDocument.Range
        
        r.Font.Bold = True
    
        With r.Find
            .MatchWildcards = True
            
            .Text = "[\(\-]*^13"
            .Replacement.Font.Bold = False
            .Execute Replace:=wdReplaceAll
        End With
        
    End Sub

    マナ

  8. #8
    VBAX Regular
    Joined
    Jan 2018
    Posts
    58
    Location
    Both solution works! Thanks again.

  9. #9
    Knowledge Base Approver VBAX Guru macropod's Avatar
    Joined
    Jul 2008
    Posts
    4,435
    Location
    Quote Originally Posted by dagerr View Post
    It stops on:
    .Execute
    with error 5560
    In that case, change:
    .Text = "[!\(\-]{1,}"
    to:
    .Text = "[!\(\-]{1;}"
    Cheers
    Paul Edstein
    [Fmr MS MVP - Word]

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •