Blog
ブログで学ぶUX

Excel VBAで罫線を引く:Borders,BorderAround

セルの罫線を、VBAで設定する方法を紹介します。

罫線を設定する方法

罫線の設定方法は2種類あり、それぞれ使い方と結果が異なります。

Borders (). 〇〇〇プロパティで設定する

構文は下記のとおりです。

[範囲].Borders([適用箇所]).[種類]=[設定値]

[範囲]は、Rangeオブジェクトです。Cells(X, Y)やRange(“A1:A5”)などを指します。Rangeオブジェクトであれば変数でも可です。[適用箇所]は省略可です。[種類]は必須で線種や太さ、色などを示し、[設定値]は[種類]に応じた値を設定します。

[適用箇所]:省略した場合、下記1、2以外すべてが適用され、もっとも単純なマス目になります。省略する場合は、()も不要です。

No 記述 反映箇所 No 記述
反映箇所
xlDiagonalDown 斜線(左上-右下) xlEdgeRight 範囲の右側罫線
xlDiagonalUp 斜線(左下-右上) xlEdgeTop 範囲の上側罫線
xlEdgeBottom 範囲の下側罫線 xlInsideHorizontal 範囲内の内部罫線(横)
xlEdgeLeft 範囲の左側罫線 xlInsideVertical 範囲内の内部罫線(縦)

[種類]:数が多いので、下表に主なものだけにまとめます。

記述(プロパティ名) 内容  記述(プロパティ名) 内容

Weight

(線の太さ) 

xlHairline 細線

   LineStyle

(線の種類)

xlContinuous 連続線
xlMedium 普通 xlDash 破線
xlThick 太線  xlDot 点線
xlThin 極細 xlLineStyleNone 線なし
記述(プロパティ名) 内容  記述(プロパティ名)  値 内容

Color(色)

※RGB関数でも指定可 

vbBlack

   ColorIndex(色番号)

※1~56の各色

vbRed
vbBlue
vbYellow

BorderAroundメソッドで設定する

選択範囲外周の罫線を一気に設定できます。構文は下記のとおりです。

[範囲].BorderAround [線の種類], [線の太さ], [色番号], [色], [テーマ色]

引数はそれぞれ上表の[種類]に対応しますが、[線の種類]と[線の太さ]は同時指定できません。[テーマ色]は基本的にあまり使いません。

使用例1

BordersとBorderAroundの違いにご注目ください。Bordersを使用する際は、withステートメントを使うとコードがすっきりして見やすくなります。

'セルB2~C4に罫線設定(点線,極細,赤)/Borders.XXプロパティ使用
With Range(Cells(2, 2), Cells(4, 3)).Borders
    .LineStyle = xlDot
    .Weight = xlHairline
    .Color = vbRed
End With

'セルE2~F4に罫線設定(連続線,太さ設定なし,赤)/BouderAroundメソッド使用
Range(Cells(2, 5), Cells(4, 6)).BorderAround LineStyle:=xlContinuous, Color:=vbRed 

[実行結果]罫線1

左の点線がBorders、右がBorderAroundの結果です。

使用例2 Excel方眼紙

いわゆる「Excel方眼紙」を、VBAで作成してみます。

Sub GraphPaper()

    Dim i As Long, L As Long    'Lは縦/横のマス目数
    Dim Target As Range         '罫線処理範囲

    L = 30          '縦/横マス目
    Set Target = Range(Cells(1, 1), Cells(L, L))
    With Target
        .ColumnWidth = 2            '列幅
        .Borders.LineStyle = xlDot  '点線

        For i = 5 To L Step 5           '5行/5列毎に下記を実行
            .Rows(i).Borders(xlEdgeBottom).LineStyle = xlContinuous   '行下罫線=実線
            .Columns(i).Borders(xlEdgeRight).LineStyle = xlContinuous '列右側=実線
        Next i
        Target.BorderAround Weight:=xlMedium  '外周
    End With

End Sub

[実行結果]罫線2

投稿日:
カテゴリ: Web制作