2017-03-08 45 views
1
  • 我想在MS Word 2010文档中选择一段文本。
  • 然后使用宏:选择文本不用粗体变化&文本的蓝色

NB的配色:我不希望这样做对整个文档文本的,只是段落/文本块我选择)选择unbolded文本并更改其颜色(所选段落) - MS Word VBA宏

图片展示了我想做些什么:

pic

我试图创建下面的宏 - 但它由于某种原因,米碟刹所有文本(粗体和不用粗体)蓝色

Sub MakeUnboldedTextBlue() 
' 
' MakeUnboldedTextBlue Macro 
' 
' 
    Selection.Find.ClearFormatting 
    Selection.Find.Font.Bold = False 
    With Selection.Find 
     .Text = "" 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = wdFindAsk 
     .Format = True 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchKashida = False 
     .MatchDiacritics = False 
     .MatchAlefHamza = False 
     .MatchControl = False 
     .MatchWildcards = False 
     .MatchSoundsLike = False 
     .MatchAllWordForms = False 
    End With 
    Selection.Font.Color = 15773696 
End Sub 

更新: 我也想排除“cyanizisation”(如果可能)

例如子弹符号: Example of the bullet symbols not being cyanized

回答

0

您可以查看所选文字中的每个字符,如果不是粗体则为其着色:

Option Explicit 

Sub CyanizeNonBoldInSelection() 
    Dim oRange As range 
    Dim oChar As range 
    Dim oListFormat As ListFormat 

    Application.UndoRecord.StartCustomRecord "CyanizeNonBoldInSelection" 

    Set oRange = Selection.range 

    For Each oChar In oRange.Characters 

     If oChar.Bold = False Then 

      oChar.Font.ColorIndex = wdTurquoise 

      If oChar.ListParagraphs.Count > 0 Then 
       Set oListFormat = oChar.ListParagraphs(1).range.ListFormat 
       oListFormat.ListTemplate.ListLevels(oListFormat.ListLevelNumber).Font.ColorIndex = wdTurquoise 
      End If 

     End If 
    Next oChar 

    Application.UndoRecord.EndCustomRecord 

End Sub 
+0

这是完美的!谢谢!如果可能,我还有一个请求。如果我想将不含粗体的文本“氰化”(不包括子弹点),那有可能吗? – John

+0

如果oChar.Bold = False并oChar.ListFormat.ListType <> wdListBullet然后 – Jbjstam

+0

谢谢,但它并不像我想要的那样工作。建议的变化意味着任何文字旁边的项目都不是“氰化”(无论是粗体还是非粗体)。我想要所有unbolded文本氰化,而不是子弹符号。如果我的请求有可能以某种方式请告诉我,麻烦道歉。我用一张图片编辑了原文,以说明这一点。 – John