罫線を引くExcelVBAコードをわかりやすくする

スポンサーリンク

罫線を引く処理をマクロで記録するとややこしいコードができあがる

そもそも私の記憶力が悪くて悪いのですが、罫線を引くVBAコードを書きたいことが多いにも関わらず思い出せない→マクロの記録でコードの書き方を確認する→マクロの記録で出来上がるコードが長くて読みにくくてわかりにくい→イライラするという悪循環を繰り返していました。

以前にもこちらで罫線を引くExcelVBAコードを紹介したことがありましたが、今回はより便利に簡単に使えるコードを備忘録も兼ねてご紹介します。

そもそも罫線で必要な要素は4つ

私の中で罫線はそんなに凝った作りでなく、以下の4つを指定すれば実行できると考えています。

  • ①罫線を引く場所(どの範囲のどの部分にひくか)
  • ②罫線の色(黒い線は表の中の文字が読みにくくなるので薄いグレーをよく使います)
  • ③罫線の種類(点線・実線など、ほとんど実線ですがたまに点線を使います)
  • ④線の太さ(薄い線を表の中に引いて、表の外側は少し太い線にすることが多いです)
  • マクロを記録するとムダな範囲の指定とテーマに沿った色選択・わけのわからない9桁くらいの数字の色指定にうんざりするので、できる限りシンプルで使いまわしやすいコードを想定しています。

    スポンサーリンク

    罫線を引くExcelVBAコード

    罫線を引くコードとして表の中に格子状に線を引くVBAコードと、枠で周囲を囲むコードを使い分けることにしました。
    罫線を引く範囲を変数に格納し、変数に格納された範囲で罫線を引くコードです。

    Sub 線で囲む(c As Range)

    Dim 線の種類
    線の種類 = xlContinuous’二重線はxlDouble、点線はxlDot
    Dim 色
    色 = RGB(200, 200, 200)
    Dim 太さ
    太さ = xlMedium’細い線はxlThin、二重線はxlThickを指定

    With c.Borders(xlEdgeLeft)
    .LineStyle = 線の種類
    .Color = 色
    .Weight = 太さ
    End With
    With c.Borders(xlEdgeTop)
    .LineStyle = 線の種類
    .Color = 色
    .Weight = 太さ
    End With
    With c.Borders(xlEdgeBottom)
    .LineStyle = 線の種類
    .Color = 色
    .Weight = 太さ
    End With
    With c.Borders(xlEdgeRight)
    .LineStyle = 線の種類
    .Color = 色
    .Weight = 太さ
    End With

    End Sub

    Sub 格子状にする(c As Range)

    Dim 線の種類
    線の種類 = xlContinuous’点線の場合はxlDot
    Dim 色
    色 = RGB(200, 200, 200)
    Dim 太さ
    太さ = xlThin’少し太い線はxlMedium

    With c.Borders
    .LineStyle = 線の種類
    .Color = 色
    .Weight = 太さ
    End With

    End Sub

    格子状に線を引く場合、上下左右をまとめて「.Borders」で罫線を引くことが可能なので、コードが少なくなります。
    これらのコードの使い方ですが、下記のような手順で上記のコードを呼び出します。
    A1セルを含む表全体に罫線を引くVBAコードです

    Sub A1セル含む表に罫線を引く()

    Cells.Borders.LineStyle = xlNone ’罫線をすべて消去する

    Dim r As Range
    Set r = Cells(1, 1).CurrentRegion’A1セルを含む表の範囲を指定

    Call 格子状にする(r)
    Call 線で囲む(r)

    End Sub

    私は罫線を引く際、BordersプロパティのTheme.colorやTintAndShadeは設定が面倒なので使っていません。

    全部RGBの数値で表すことにしています。
    RGBは(0,0,0)で指定すれば黒、(255,255,255)で指定すれば黒になるので、適当に間くらいの色を指定してグレーにしています。

    コメント