【Word VBA】箇条書き、段落番号、アウトライン、ListNumフィールドのリストレベルを塗分けるWordマクロ

2022年7月14日

【Word VBA】箇条書き、段落番号、アウトライン、ListNumフィールドのグループを塗分けるWordマクロ」に関連して別の視点のマクロを作成しました。

今回の記事でも前回と同様に、文書で使われている箇条書きや段落番号などのリストの設定状態を可視化することを目的にしています。

リストの設定は多くの場合に、Wordが自動判定をするので意図しないリストレベルで設定されてしまうことがあります。また、文書間でリストをコピペをした場合にも予想しない設定になることがあるでしょう。

今回の記事では、リストレベル別に異なる背景色に塗分けるマクロを紹介します。

このマクロでできること

リスト別に9色の背景色で塗分けます。色は固定されています。

(マクロ実行前)

(マクロ実行後)

契約書の例だと以下の通りです。アウトライン機能を使い、レベル3までの番号書式とインデントを定義しています。

(マクロ実行前)

(マクロ実行後)

マクロの解説

このマクロでも前回と同様にListオブジェクトを用いて処理をしています。

該当箇所のリストレベルに応じた背景色を特定するためにGetBackgroundColorファンクションを用意しました。

マクロ


Sub リストレベルの塗分け()

 Dim myDoc As Document: Set myDoc = ActiveDocument
 Dim i As Integer

 For i = 1 To myDoc.Lists.Count
  With myDoc.Lists(i)
   Dim j As Integer
   For j = 1 To .CountNumberedItems
    Dim Para As Range: Set Para = .ListParagraphs(j).Range
    Dim myColor As Long
    myColor = GetBackgroundColor(Para.ListFormat.ListLevelNumber)
    Para.End = Para.End - 1 '末尾の段落記号を除外
    Para.Font.Shading.BackgroundPatternColor = myColor
   Next
  End With
 Next

End Sub

Private Function GetBackgroundColor(i As Integer) As Long

 Select Case i
  Case 1
   GetBackgroundColor = wdColorTurquoise
  Case 2
   GetBackgroundColor = wdColorBrightGreen
  Case 3
   GetBackgroundColor = wdColorYellow
  Case 4
   GetBackgroundColor = wdColorPink
  Case 5
   GetBackgroundColor = wdColorBlue
  Case 6
   GetBackgroundColor = wdColorRed
  Case 7
   GetBackgroundColor = wdColorGreen
  Case 8
   GetBackgroundColor = wdColorGray25
  Case 9
   GetBackgroundColor = wdColorTeal
 End Select

End Function

関連記事

【Word VBA】箇条書き、段落番号、アウトライン、ListNumフィールドのグループを塗分けるWordマクロ

-コード
-, ,