【Word VBA】表中の結合されたセルを着色するWordマクロ(その3)

2017年10月25日

先ほどの記事「【コード】表中の結合されたセルを着色するWordマクロ(その2)」に誤りがありましたので修正します。ランチ前に試運転をしっかりせずにあわてて投稿をしてしまいました(笑)。失礼しました。

サンプルの表が2行の結合のみであったために、3行以上の行の結合に対応しておりません。これが誤判定の原因です。

先ほどの記事のマクロでは、3行以上結合されたセルがある場合には結合していないセル(赤矢印の部分)を誤判定で着色してしまいます。

このマクロでできること

セルが縦に結合している場合、3行以上の結合でも誤判定をしません。

2列の表の縦方向と横方向の結合セルを黄色に着色します。

実行前

実行後

マクロの解説

着色するセルの特定方法を変更しました。

マクロ


Sub セルの結合を判定する3()

 '2列の表の結合セルを判定
 
 Dim myTable As Table
 Dim i As Integer
 Dim myCell1 As Cell
 Dim myCell1Prev As Cell
 Dim myCell2 As Cell
 Dim myCell2Prev As Cell
 
 On Error Resume Next
 
 '-------------------------------------------
 '画面の更新をオフ
 '-------------------------------------------
 Application.ScreenUpdating = False
 
 For Each myTable In ActiveDocument.Tables
  If myTable.Uniform = False Then
   For i = 1 To myTable.Rows.Count
    '-------------------------------------------
    'i行目の1列目のセルの存在確認
    '-------------------------------------------
    Set myCell1 = myTable.Cell(i, 1)
    If Err = 0 Then
     Set myCell1Prev = myCell1
    Else
     myCell1Prev.Range.Shading.BackgroundPatternColorIndex = wdYellow
     Err.Clear
    End If
    '-------------------------------------------
    'i行目の2列目のセルの存在確認
    '-------------------------------------------
    Set myCell2 = myTable.Cell(i, 2)
    If Err = 0 Then
     Set myCell2Prev = myCell2
    Else
     If myCell1Prev.Range.Information(wdMaximumNumberOfColumns) = 1 Then
      myCell1Prev.Range.Shading.BackgroundPatternColorIndex = wdYellow
     Else
      myCell2Prev.Range.Shading.BackgroundPatternColorIndex = wdYellow
     End If
     Err.Clear
    End If
   Next
  End If
 Next

 '-------------------------------------------
 '画面の更新をオン
 '-------------------------------------------
 Application.ScreenUpdating = True

End Sub

-コード
-, , ,