今日を乗り切るExcel研究所

Excel に働かされていませんか

壊れた罫線を自動で修復したい

コピー&ペーストなどで壊れた罫線を修復する方法と、それを自動で行うマクロを紹介します。

罫線は壊れやすい

罫線はシート上の場所ではなくセルに属する書式なので、ちょっとセルの編集操作を誤ると簡単に壊れてしまいます。

罫線のある範囲にセルのコピー&ペーストをするときは、貼り付けの形式を慎重に選ばなければなりません。

罫線を壊してしまったらそれを修復するも簡単ではありません。

壊れた範囲を「セルの書式設定」ダイアログの「罫線」タブで修復するのはかなり面倒な作業です。

「罫線」のインターフェースは、キーボードだけで操作・設定するのはかなり無理があります。マウスでも壊れた罫線の設定を一本ずつチマチマと変更させられるのは本当に苦痛でしかありません。

手作業で罫線を修復するには

罫線を修復するには、壊れていないセルから書式だけコピー&ペーストするのが手っ取り早いでしょう。

貼り付けの形式を選択するタイミングは、貼り付け前と後がありますが、慣れれば貼り付け後の方が速くなると思います。

【手順例】

  1. 罫線の壊れたセルの周辺から、正しい罫線を持つセルをコピーします(Ctrl + C)
  2. 罫線の壊れているセル範囲を選択し、「書式設定」の貼り付けをします
    • キー操作(貼り付け前): AltESTEnter
    • キー操作(貼り付け後): Ctrl + VCtrlREsc
      (「貼り付けのオプション」はEscで閉じて下さい。 Enterを押すとなぜか値も貼り付けになってしまいます(Excel 2013))
  3. これを繰り返します

 



罫線を修復するマクロ

壊れた罫線を補完するマクロを作成してみました。

このマクロ VBA は、選択されたセル領域の1行目のタテ罫線と1列目のヨコ罫線を参照して内部罫線を引きなおします。

f:id:shego:20170422222717p:plain

Option Explicit

Sub 罫線の修復()
    Application.ScreenUpdating = False

    Dim bc As Variant
    Dim bw As Integer
    Dim bl As Integer
    Dim rng As Range
    
    For Each rng In Selection.Columns
        With rng.Rows(1).Borders(xlEdgeRight)
            bc = .Color
            bw = .Weight
            bl = .LineStyle
        End With
        With rng.Borders(xlEdgeRight)
            .Color = bc
            .Weight = bw
            .LineStyle = bl
        End With
    Next
    For Each rng In Selection.Rows
        With rng.Columns(1).Borders(xlEdgeBottom)
            bc = .Color
            bw = .Weight
            bl = .LineStyle
        End With
        With rng.Borders(xlEdgeBottom)
            .Color = bc
            .Weight = bw
            .LineStyle = bl
        End With
    Next
    
    Application.ScreenUpdating = True
End Sub

【使い方】

  1. VBA 標準モジュールに上記 VBA ソースをコピー&ペーストします
  2. 罫線の壊れたセルのを含む周辺のセル領域を範囲選択します
    • 1行目と1列目の罫線が正常な範囲を選択します
  3. 「罫線の修復」マクロを実行します
  4. 内部罫線が補完されて修復されます

【注意】操作結果を元に戻すこと(Undo)はできません。

まとめ

Windows 10 の Excel 2013 で動作確認しました。

関連記事

www.shegolab.jp