EXCEL VBA セルの範囲に罫線を引く・データ範囲に罫線を設定(格子罫線・外枠罫線・罫線削除)
EXCEL VBA セルの範囲に罫線を引く・データ範囲に罫線を設定(BorderAroundメゾット:格子罫線・外枠罫線・罫線削除)
EXCELで様々なデータを利用して表を作成すると思います。普段EXCELで罫線を引く事は、そこまで難しい事ではありませんが、VBAプログラムで作成する際は、ビジュアル的に見ないで作成するので、イメージしづらいと思います。ただ、VBAプログラムを利用して罫線を引くプログラムを作成すると、表のサイズ合わせて罫線を引いたり、ある条件を付けて罫線を引くなどプログラミングした条件による判断で罫線を引く事もできます。ここでは、格子罫線と外枠罫線を中心に利用したサンプルプログラムの説明をいたします。
なお、基礎的な罫線を引く方法につきましては、下記を参照してください。
●EXCEL VBA Borders LineStyle Weightの使い方(セルの罫線を引く)
● オブジェクト.BorderAround(LineStyle,Weight,ColorIndex,Color)
①:セル範囲を指定(オブジェクト)
②:罫線の種類(LineStyle)
③:罫線の太さ(Weight)
④:罫線の色を指定(ColorIndex,Color)
※どちらかの引数に色を設定 (ColorIndex又はColor)
● オブジェクト.Borders.LineStyle = 定数
【引数の説明】
①:セル範囲を指定(オブジェクト)
②:罫線の種類(LineStyle)
罫線の種類 | 定数 | 表示結果 |
---|---|---|
細実線 | LineStyle = xlContinuous | ![]() |
破線 | LineStyle = xlDash | ![]() |
一点鎖線 | LineStyle = xlDashDot | ![]() |
二点鎖線 | LineStyle = xlDashDotDot | ![]() |
点線 | LineStyle = xlDot | ![]() |
斜め破線 | LineStyle = xlSlantDashDot | ![]() |
二重線 | LineStyle = xlDouble | ![]() |
線なし(罫線削除) | xlLineStyleNone | ![]() |
罫線の太さ(種類) | 定数 | 表示結果 |
---|---|---|
極細 | Weight = xlHairline | ![]() |
細 | Weight = xlThin | ![]() |
中 | Weight = xlMedium | ![]() |
太 | Weight = xlThick | ![]() |
指定したセル範囲の周囲に罫線を引く(外枠罫線)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub セル範囲01() '外枠罫線 '売上高(1月分)極細線・色1:黒 Range("B5:C11").BorderAround Weight:=xlHairline, ColorIndex:=1 '売上高(3月分)細線・色3:赤 Range("B17:C23").BorderAround Weight:=xlThin, ColorIndex:=3 '売上高(2月分)中線・色4:緑 Range("F5:G11").BorderAround Weight:=xlMedium, ColorIndex:=4 '売上高(4月分)太線・色5:青 Range("F17:G23").BorderAround Weight:=xlThick, ColorIndex:=5 End Sub |
(画面クリックして拡大)
指定したセル範囲の周囲に罫線を引く(格子罫線)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub セル範囲02() '格子罫線 '売上高(1月分)細実線 Range("B5:C11").Borders.LineStyle = xlContinuous '売上高(3月分)破線 Range("B17:C23").Borders.LineStyle = xlDash '売上高(2月分)一点鎖線 Range("F5:G11").Borders.LineStyle = xlDashDot '売上高(4月分)斜め破線 Range("F17:G23").Borders.LineStyle = xlSlantDashDot End Sub |
(画面クリックして拡大)
表の大きさに応じて罫線を引く(外枠罫線・格子罫線)
下記のサンプルプログラムは、表の大きさ(範囲)を把握して、その表の先頭行と最終行を把握します。表の全体は、「格子罫線」を引きます。外枠は、「中線」を引きます。先頭行は、「斜め破」を引きます。最終行は、「二重線」を引きます。表の大きさを把握して指定した箇所に罫線を自動に引くサンプルプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub セル範囲03() '外枠罫線・格子罫線 Dim lRow, mRow As Long Dim Hani, Sentou, Saisyuu As String Hani = Range("B5").CurrentRegion.Address(False, False) 'セルB5から始まる表の範囲を取得 Sentou = Range("B5").CurrentRegion.Rows(1).Address(False, False) 'セルB5から始まる表の先頭行を取得 Saisyuu = Range("B5").CurrentRegion.Rows(Range("B5").CurrentRegion.Rows.Count).Address(False, False) 'セルB5から始まる最終行を取得 Range(Hani).Borders.LineStyle = xlContinuous '格子罫線を作成:細実線 Range(Hani).BorderAround Weight:=xlMedium, ColorIndex:=1 '外枠を作成する:中線・色1:黒 Range(Sentou).Borders(xlEdgeBottom).LineStyle = xlSlantDashDot '先頭行:斜め破線・罫線位置下 Range(Saisyuu).Borders(xlEdgeTop).LineStyle = xlDouble '最終行(合計):二重線・罫線位置上 End Sub |
(画面クリックして拡大)
複数の表に対して罫線を引く(自動的に大きさを判断し罫線を引く)
下記のサンプルプログラムは、サンプルプログラム③の応用プログラムです。同じシート内に、複数の表がある時に、順番に指定した表に対して罫線を引くプログラムです。プログラム内に、表の位置(セル番号)を設定する事で、表の大きさも自動的に判断して、同じフォーマットで罫線を引く事ができるサンプルプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Sub セル範囲04() '外枠罫線・格子罫線・複数表に対して線を引く Dim Hyou(2) As String Dim lRow, mRow, I As Long Dim Hani, Sentou, Saisyuu As String Hyou(0) = "B5" '上期営業売上一覧表 (セル位置) Hyou(1) = "B23" '役職別支給一覧表 (セル位置) Hyou(2) = "I22" '支給合計表 (セル位置) For I = 0 To 2 '配列で設定した表のセル位置順番に繰り返す Hani = Range(Hyou(I)).CurrentRegion.Address(False, False) 'セルB5から始まる表の範囲を取得 Sentou = Range(Hyou(I)).CurrentRegion.Rows(1).Address(False, False) 'セルB5から始まる表の先頭行を取得 Saisyuu = Range(Hyou(I)).CurrentRegion.Rows(Range(Hyou(I)).CurrentRegion.Rows.Count).Address(False, False) 'セルB5から始まる最終行を取得 Range(Hani).Borders.LineStyle = xlContinuous '格子罫線を作成:細実線 Range(Hani).BorderAround Weight:=xlMedium, ColorIndex:=1 '外枠を作成する:中線・色1:黒 Range(Sentou).Borders(xlEdgeBottom).LineStyle = xlSlantDashDot '先頭行:斜め破線・罫線位置下 Range(Saisyuu).Borders(xlEdgeTop).LineStyle = xlDouble '最終行(合計):二重線・罫線位置上 Next I End Sub |
(画面クリックして拡大)
シート上の罫線を全て消去する方法 (罫線の削除①)
下記のサンプルプログラムは、シート上にある罫線を全て削除するサンプルプログラムです。全ての罫線を削除する際は、格子・斜め(右上・右下)3種類の罫線を削除する必要があります。それでは、順番に説明いたします。
1 2 3 4 5 6 7 8 9 10 |
Sub セル範囲_罫線削除①() With Cells 'Cellsは、シート全体を指定します。 .Borders.LineStyle = xlLineStyleNone '罫線を削除(格子罫線) .Borders(xlDiagonalUp).LineStyle = xlLineStyleNone '罫線を削除(右上がり罫線) .Borders(xlDiagonalDown).LineStyle = xlLineStyleNone '罫線を削除(右下がり罫線) End With End Sub |
(画面クリックして拡大)
シート上の指定した部分のみ罫線(表)を消去する方法 (罫線の削除②)
下記のサンプルプログラムは、シート上にある指定した罫線(表)を削除するサンプルプログラムです。サンプル⑤では、シート上にある全ての罫線を削除してしまいますが、部分的に消す必要もあると思いますので、部分的に罫線を削除する方法を説明いたします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub セル範囲_罫線削除②() Dim Hani, Sentou, Saisyuu As String Hani = Range("B5").CurrentRegion.Address(False, False) 'セルB5から始まる表の範囲を取得 With Range(Hani) .Borders.LineStyle = xlLineStyleNone '罫線を削除(格子罫線) .Borders(xlDiagonalUp).LineStyle = xlLineStyleNone '罫線を削除(右上がり罫線) .Borders(xlDiagonalDown).LineStyle = xlLineStyleNone '罫線を削除(右下がり罫線) End With End Sub |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。