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 | タグ: , ]

« | »

コメントを残す

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

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報