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

Pocket

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 範囲外の罫線を除く、範囲内のすべてのセルの水平罫線

[ 2017年3月25日 | カテゴリー: Excel | タグ: , ]

« | »

コメント

  1. nob! より:

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

  2. stabucky より:

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報