我有这个例程运作良好,但它会因为它标记段落标记而混乱。如何跳过段落标记?
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
答案 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
条件是多余的并且是多余的。
我不知道这是否解决了你的问题...我不完全确定你的意思是“因为它会影响段落标记而弄糟”。