2017-08-12 60 views
0

我有几个文档要每周修改,其中包含从1 x 6到6 x 10大小的表格。所有表格中的所有单元格均包含文本,其中一些单元格包含粗体文本,一些单元格具有混合格式(粗体和标准),其余单元格为标准。如何基于每个单独的单元格中文本的格式来格式化MS Word中的表格单元格

我试图找到一个宏的代码来改变每个单元格中包含粗体文本的背景颜色,即使它也包含标准文本。 这很简单,我可以找到几种不同的解决方案,但我遇到了所有我尝试过的代码示例中的以下问题。

我试过的所有例子都会改变所有包含只有粗体文本的单元格的背景颜色,但忽略混合格式(粗体和非标准)的单元格。我尝试了几种不同的方法来解决这个问题,但只是没有解决问题的知识。

这里是我使用的代码示例:

Sub Fill_Bold_Cell() 

Dim myCell 
For Each myCell In Selection.Tables(1).Range.Cells 

    If myCell.Range.Font.Bold = True Then 

     myCell.Range.Shading.BackgroundPatternColor = -603923969 

    End If 
Next myCell 

End Sub 

这个问题的任何帮助是极大的赞赏。

回答

0

这一对程序应该做的工作。

Sub Fill_Bold_Cell() 

    Dim Tbl As Table 
    Dim myCell 

    For Each Tbl In ActiveDocument.Tables 
     For Each myCell In Tbl.Range.Cells 
      If FindBold(myCell.Range) Then 
       myCell.Range.Shading.BackgroundPatternColor = -603923969 
      End If 
     Next myCell 
    Next Tbl 
End Sub 

Private Function FindBold(Rng As Range) As Boolean 

    With Rng.Find 
     .ClearFormatting 
     .Font.Bold = True 
     .Text = "" 
     .Format = True 
     .Forward = True 
     .Wrap = wdFindStop 
     .Execute 
     FindBold = .Found 
    End With 
End Function 

正如你所见,我保持你的代码几乎不变。给你一个问题的关键部分被转移到一个单独的功能中。顺便说一下,好的部分不会被没有的部分所污染。

+0

非常感谢你的帮助。这对我的目的非常有效。 –

相关问题