1

我有这个运作良好的例程,但它在计算段落标记时会搞砸。如何跳过段落标记?

        For Each wrd In ActiveDocument.Words
            If Selection.Style = ActiveDocument.Styles("Normal") Then
               If wrd.Font.Name <> "Arial" Or wrd.Font.Size < 9 Or wrd.Font.Size = 11 Or wrd.Font.Size > 12 _
                Or wrd.Font.Color <> wdColorBlack Or wrd.Font.Color <> wdColorAutomatic Or wdColorBlue Then
                    wrd.HighlightColorIndex = wdYellow
                    wordrep = wordrep + 1
                End If
            End If
        Next
4

2 回答 2

1

试试这个

For Each wrd In ActiveDocument.Words
    If Selection.Style = ActiveDocument.Styles("Normal") Then
        If wrd.Font.Name <> "Arial" Or _
           wrd.Font.Size < 9 Or _
           wrd.Font.Size = 11 Or _
           wrd.Font.Size > 12 _
           Or wrd.Font.Color <> wdColorBlack Or _
           wrd.Font.Color <> wdColorAutomatic Or _
           wrd.Font.Color <> wdColorBlue Then
                If Asc(Left(wrd, 1)) <> 13 Then
                    wrd.HighlightColorIndex = wdYellow
                    wordrep = wordrep + 1
                End If
        End If
    End If
Next
于 2012-06-15T02:14:24.537 回答
1

你的逻辑有问题。你是什​​么意思Or wdColorBlue Then?这不会按预期工作......

如果你wrd.Font.Color <> wdColorBlue的意思是:字体颜色不能同时是黑色和蓝色,所以wrd.Font.Color <> wdColorBlack Or wrd.Font.Color <> wdColorBlue永远都是真的!因此,您的内部If构造的内容将始终执行。

如果您的意思是wrd.Font.Color = wdColorBlue:当字体为蓝色时,则不一定是黑色,因此wrd.Font.Color <> wdColorBlack条件是多余和多余的。

我不知道这是否解决了你的问题......我不完全确定你所说的“它在计算段落标记时搞砸了”是什么意思。

于 2012-06-15T06:52:31.043 回答