「【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