pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

WordVBA:リスト行かどうか判定

Sub 行判定()
'
'リスト行かどうかの判定
'リスト行なら、左ボーダーに、黄金色の直線が引かれる
'
    Dim para As Paragraph
    For Each para In ActiveDocument.Paragraphs
        With para.range
                .Borders(wdBorderLeft).LineStyle = wdLineStyleNone      '≒HTML/CSSのborder-left属性を削除
            If .ListParagraphs.Count = 1 Then                           'リスト行かどうかの判定 1=yes
                .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle    '直線
                .Borders(wdBorderLeft).Color = wdColorGold              '黄金色
                .Borders(wdBorderLeft).LineWidth = wdLineWidth600pt     '600pt = 6point幅
            End If
        End With
    Next
End Sub

まず、結果を下の画像で確認してください。
f:id:PageTAKA:20130807122834j:plain
段落の左側に黄金色の直線が引かれたのが「リスト」段落として成立している場所です。最後の行は、一見「リスト行」のようですが、実は、何らかの理由でそうなっていません。似せたようにして、ひきつづき、作業した、というような、ありがちな作業結果です。

なお、普通のWord操作では、周辺罫線とでも言えばよいのか、四周罫線、アンダーライン、まれにアッパーライン(オーバーライン)を使いますが、左だけ、右だけというのは使いませんね。なので、上のVBAを試した場合、削除するアイコンが無さそうです(詳細不知)。なので、VBAで消すという方法を下に書いときます。

Sub 左ボーダー装飾を消す()
'
'左ボーダー装飾を消す
'
    Dim para As Paragraph
    For Each para In ActiveDocument.Paragraphs
        With para.range
                .Borders(wdBorderLeft).LineStyle = wdLineStyleNone      '装飾属性を削除
        End With
    Next
End Sub