表を作る際に必要な罫線について、VBAでの設定方法等を紹介します。
【今回の内容】
1.セル・任意の範囲の外側に罫線を引く方法
2.セル内部・任意の範囲の内部に罫線を引く方法
セル・任意の範囲の外側に罫線を引く
セルや任意の範囲の外側に罫線を引くには、BorderAroundとBordersを用いて設定します。BorderAroundは範囲の外側に罫線を引くだけですが、Bordersは範囲の外側・内部に罫線を書かせる設定を行うことができます。

セル・任意の範囲の外側への罫線の引き方は次のように書きます。
《BorderAroundによる設定方法》
”セル・任意の範囲” .BorderAround LineStyle:=線の種類 , Weight:=線の太さ , Color:=色
《Bordersによる設定方法》
“セル・任意の範囲” .Borders(罫線を引く位置) .設定項目
LineStyle・Weight・Colorへそれぞれ値を指定することで、罫線の書式を設定します。
色については、RGB関数もしくは、ColorIndexを用いても設定可能です。色の設定方法に関しては、こちらの記事で説明しているので参考にしてください。
【VBAで効率化!】セルの操作(セル背景・文字の色の取得・変更)
BordersAroundによる設定では、線の種類・線の太さについて次の値をそれぞれ用いて設定します。
まず、線の種類は次のものがあります。
《線の種類》
線の種類 | 値 | 注意点 |
実線 | xlContinuous | |
破線 | xlDash | 線の太さは、細線(xlThin)もしくは普通(xlMedium)のみ設定可能 |
一点鎖線 | xlDashDot | |
二点鎖線 | xlDashDotDot | |
点線 | xlDot | 線の太さの設定は指定不可能 |
二重線 | xlDouble | |
斜め破線 | xlSlantDashDot | |
なし | xlLineStyleNone |
線の太さに関しては次のものがあります。
《線の太さ》
太さ | 値 |
極細 | xlHairline |
細線 | xlThin |
普通 | xlMedium |
太線 | xlThick |
Bordersプロパティによる設定の方法は次の項目で説明します。
サンプルコード
BorderAroundを用いたサンプルコードです。
1 2 3 4 | Sub BorderAround_sample() Cells(3, 2).BorderAround LineStyle:=xlContinuous, _ Weight:=xlThin, Color:=RGB(255, 0, 0) End Sub |
With ~ End Withを用いて次のように見やすくすることも可能です。
1 2 3 4 5 6 7 | Sub BorderAround_sample() With Cells(3, 2) .BorderAround LineStyle:=xlContinuous .BorderAround Weight:=xlThin .BorderAround Color:=RGB(255, 0, 0) End With End Sub |

セル内部・任意の範囲の内部に罫線を引く
セル内部や、任意の範囲の内側にも罫線を引く場合は、Bodersを用いて設定します。

Bordersによる設定の仕方は、先ほどと同じように次のように書きます。
《Bordersによる設定方法》
“セル・任意の範囲” .Borders(罫線を引く位置) .設定項目 = 値
なお、BorderAroundでは、設定項目とイコールの間にダブルコロンがつきましたが、Bordersではつかないので注意してください。
罫線を引く位置の値は8種類、設定項目は3種類あります。
まずは引く位置の値です。
《線を引く位置》
位置 | 値 |
斜め(左上から右下) | xlDiagonalDown |
斜め(左下から右下) | xlDiagonalUp |
下端 | xlEdgeBottom |
左端 | xlEdgeLeft |
右端 | xlEdgeRight |
上端 | xlEdgeTop |
範囲内の横線 | xlInsideHorizontal |
範囲内の縦線 | xlInsideVertical |
また、設定項目は次の通りです。
《設定項目》
設定項目 | 値 |
線の種類 | LineStyle |
線の太さ | Weight |
色 | Color |
なお、線の種類・太さに関しては、前述の表の値を参照してください。また、色については、先ほどと同様に
【VBA】セルの操作(セル背景・文字の色の取得・変更)を参考にしてください。
サンプルコード
Bordersを利用したサンプルコードです。
1 2 3 4 5 6 7 8 9 10 | .Borders(xlDiagonalDown) .LineStyle = xlContinuous .Weight = xlThin .Color = RGB(0, 255, 0) End With With .Borders(xlEdgeBottom) .LineStyle = xlDot .Color = RGB(255, 0, 0) End With End Sub |

1 2 3 4 5 6 7 8 9 10 11 | Sub Border_sample2() With Range(Cells(3, 2), Cells(5, 5)) With.Borders(xlInsideHorizontal) .LineStyle = xlDot .Weight = xlThin .Color = RGB(255, 0, 0) End With .BorderAround LineStyle:=continuous .BorderAround Color:=RGB(0, 0, 0) End With End Sub |

コメント