如何避免段落标记?

时间:2012-06-14 23:01:37

标签: vba ms-word

我有这个例程运作良好,但它会因为它标记段落标记而混乱。如何跳过段落标记?

        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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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条件是多余的并且是多余的。

我不知道这是否解决了你的问题...我不完全确定你的意思是“因为它会影响段落标记而弄糟”。