【问题标题】:How to format table cells in MS Word based on the format of the text in each individual cell如何根据每个单元格中文本的格式格式化 MS Word 中的表格单元格
【发布时间】:2018-01-20 18:42:42
【问题描述】:

我有几个 Word 文档每周要修改,其中包含大小从 1 x 6 到 6 x 10 不等的表格。所有表格中的所有单元格都包含文本,一些单元格包含粗体文本,一些单元格具有混合格式(粗体和标准),其余单元格是标准的。

我正在尝试为宏查找代码以更改包含粗体文本的每个单元格中的背景颜色,即使它还包含标准文本。 这很简单,我能够找到几种不同的解决方案,但是在我尝试过的所有代码示例中都遇到了以下问题。

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

这是我正在使用的代码示例:

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

非常感谢您对此问题的任何帮助。

【问题讨论】:

    标签: vba text ms-word formatting


    【解决方案1】:

    这对程序应该可以完成这项工作。

    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
    

    如您所见,我几乎没有改变您的代码。给你带来问题的关键部分被移到了一个单独的函数中。顺便说一句,好的部分不会被不好的部分污染。

    【讨论】:

    • 非常感谢您的帮助。这对我的目的非常有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多