Excelで選択範囲内の罫線の太さを変えるマクロ

Excelで困ることの一つと言えば凝った表です。罫線の太さが細かく調整されていると見た目がいいです。一方、メンテナンスが面倒になります。太さが混在していると非常に醜いです。
シンプルな表ならば一括して太さを指定し直せばいいのですが、罫線が不要な部分にもセットされてしまいます。
そこで、罫線がある部分だけを対象に太さを一括して変えるマクロを考えました。

Sub 選択範囲内の罫線の太さを変える()
  Dim border_index As Integer
  Dim border_weight As Integer
  Dim res As String
  Dim mycell
  Const maxrow = 100
  Const maxcol = 100
  Const str = "線の太さ。1-極細、2-細、3-中、4-太"
  res = InputBox(str, "太さ", 2)
  If res = "" Then
    Exit Sub
  End If
  border_weight = CInt(res)
  If border_weight > 4 Or border_weight < 1 Then
    MsgBox ("線の太さが範囲外。")
    Exit Sub
  End If
  If Selection.rows.Count > maxrow Or Selection.Columns.Count > maxcol Then
    res = MsgBox("範囲が広いので" & maxrow & "行×" & maxcol & "列を処理。", vbOKCancel)
    If res = vbCancel Then
      Exit Sub
    End If
    Range(Cells(1, 1), Cells(maxrow, maxcol)).Select
  End If
  For Each mycell In Selection
    For border_index = 7 To 10 'セルの4辺(左上下右)
      If mycell.Borders(border_index).LineStyle <> xlLineStyleNone Then
        mycell.Borders(border_index).Weight = border_weight
      End If
    Next border_index
  Next mycell
End Sub

範囲を選択して実行すると、選択範囲内の罫線の太さを一律に変更します。

マクロで罫線を取り扱う場合によく使う定数は次の通りです。

LineStyle
名前 説明
xlContinuous 1 実線
xlDash -4115 破線
xlDashDot 4 一点鎖線
xlDashDotDot 5 ニ点鎖線
xlDot -4118 点線
xlDouble -4119 2本線
xlLineStyleNone -4142 線なし
xlSlantDashDot 13 斜破線
Weight
名前 説明
xlHairline 1 極細(最も細い罫線)
xlThin 2 細い
xlMedium -4138
xlThick 4 太い (最も太い罫線)
XlBordersIndex
名前 説明
xlDiagonalDown 5 範囲内の各セルの左上隅から右下への罫線
xlDiagonalUp 6 範囲内の各セルの左下隅から右上への罫線
xlEdgeLeft 7 範囲内の左端の罫線
xlEdgeTop 8 範囲内の上側の罫線
xlEdgeBottom 9 範囲内の下側の罫線
xlEdgeRight 10 範囲内の右端の罫線
xlInsideVertical 11 範囲外の罫線を除く、範囲内のすべてのセルの垂直罫線
xlInsideHorizontal 12 範囲外の罫線を除く、範囲内のすべてのセルの水平罫線

コメント

  1. nob! より:

    こういうのが、役に立つマクロの見本ですね。すごく勉強になりました。使わせていただきます。心から感謝いたします。

  2. stabucky より:

    >nob!さん
    お役に立てて嬉しいです。

  3. g2saru より:

    VBAコードを書いたことがない初心者です。コピー&ペーストして利用させていただきます。
    本当に助かります。感動しました。誠にありがとうございます。

  4. stabucky より:

    ご利用いただきありがとうございます。
    お役に立てたのであれば幸いです。

タイトルとURLをコピーしました