先ほどの記事「【コード】表中の結合されたセルを着色する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