セルの罫線を、VBAで設定する方法を紹介します。
罫線を設定する方法
罫線の設定方法は2種類あり、それぞれ使い方と結果が異なります。
Borders (). 〇〇〇プロパティで設定する
構文は下記のとおりです。
1 |
[範囲].Borders([適用箇所]).[種類]=[設定値] |
[範囲]は、Rangeオブジェクトです。Cells(X, Y)やRange("A1:A5")などを指します。Rangeオブジェクトであれば変数でも可です。[適用箇所]は省略可です。[種類]は必須で線種や太さ、色などを示し、[設定値]は[種類]に応じた値を設定します。
[適用箇所]:省略した場合、下記1、2以外すべてが適用され、もっとも単純なマス目になります。省略する場合は、()も不要です。
No | 記述 | 反映箇所 | No | 記述 |
反映箇所 |
1 | xlDiagonalDown | 斜線(左上-右下) | 5 | xlEdgeRight | 範囲の右側罫線 |
2 | xlDiagonalUp | 斜線(左下-右上) | 6 | xlEdgeTop | 範囲の上側罫線 |
3 | xlEdgeBottom | 範囲の下側罫線 | 7 | xlInsideHorizontal | 範囲内の内部罫線(横) |
4 | xlEdgeLeft | 範囲の左側罫線 | 8 | xlInsideVertical | 範囲内の内部罫線(縦) |
[種類]:数が多いので、下表に主なものだけにまとめます。
記述(プロパティ名) | 値 | 内容 | 記述(プロパティ名) | 値 | 内容 |
Weight (線の太さ) |
xlHairline | 細線 |
LineStyle (線の種類) |
xlContinuous | 連続線 |
xlMedium | 普通 | xlDash | 破線 | ||
xlThick | 太線 | xlDot | 点線 | ||
xlThin | 極細 | xlLineStyleNone | 線なし |
記述(プロパティ名) | 値 | 内容 | 記述(プロパティ名) | 値 | 内容 |
Color(色) ※RGB関数でも指定可 |
vbBlack | 黒 |
ColorIndex(色番号) ※1~56の各色 |
1 | 黒 |
vbRed | 赤 | 3 | 赤 | ||
vbBlue | 青 | 5 | 青 | ||
vbYellow | 黄 | 6 | 黄 |
BorderAroundメソッドで設定する
選択範囲外周の罫線を一気に設定できます。構文は下記のとおりです。
1 |
[範囲].BorderAround [線の種類], [線の太さ], [色番号], [色], [テーマ色] |
引数はそれぞれ上表の[種類]に対応しますが、[線の種類]と[線の太さ]は同時指定できません。[テーマ色]は基本的にあまり使いません。
使用例1
BordersとBorderAroundの違いにご注目ください。Bordersを使用する際は、withステートメントを使うとコードがすっきりして見やすくなります。
1 2 3 4 5 6 7 8 9 |
'セル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 |
左の点線がBorders、右がBorderAroundの結果です。
使用例2 Excel方眼紙
いわゆる「Excel方眼紙」を、VBAで作成してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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 |