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

ロジックに問題があります。どういう意味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 に答える
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 に答える