『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【VBA】罫線を引く方法

【VBA】セルに罫線(下線・二重線・外枠線)を引く方法

今回は VBA で指定したセル範囲に好きな色や太さの罫線を引く方法を解説します。とりあえず、セル B2:D2 に青いアンダーラインを引いてみます。

'[VBA] セルB2:D2に青色アンダーラインを引くプロシージャ

Sub Line_Test_1()

  '変数をBorderコレクションで宣言
  Dim myborder As Border

  '変数myborderにBorderオブジェクトを格納
  Set myborder = Range("B2:E2").Borders(xlEdgeBottom)

  With myborder
    .LineStyle = xlContinuous '実線を指定
    .Weight = xlThick '太線を指定
    .ColorIndex = 5 '青色を指定

  End With

End Sub

Line_Test_1() を実行すると次のような太い罫線が引かれます。
 
VBA 青いアンダーライン(下線)

【VBA】Bordersコレクション

セルの罫線は Range オブジェクトに属する Bordersコレクションです。Borders コレクションは上下、左右、対角線など個別の Border オブジェクトをまとめたものです。Borders プロパティの引数で「どの場所に線を引くのか」を指定することができます。
 
VBA 罫線の種類 (Bordersコレクション)
 

罫線の種類

線の種類は Border オブジェクトの LineStyle プロパティ で指定します。

Borders.LineStyle Property 線の種類
xlContinuous 細い実線
xlDash 破線
xlDashDot 一点鎖線
xlDashDotDot 二点鎖線
xlDot 点線
xlDouble 二重線
xlSlantDashDot 斜破線
xlLineStyleNone 無し

罫線の太さ

線の太さは Weight プロパティ で指定します:

Borders.Weight Property 線の太さ
xlHairline 極細
xlThin 細い
xlMedium 中間
xlThick 太い

罫線の色

線の色は Color プロパティ、もしくは ColorIndex プロパティで指定します。主な色の種類は次の通りです。

Color Property ColorIndex Property
RGB(255,0,0) 3
RGB(0,255,0) 4
RGB(0,0,255) 5
RGB(255,255,0) 6

格子線

指定したセル範囲に格子線を引きたいときは、Borders コレクションの引数に何も指定しないようにします。

'[VBA] 赤色の格子線を引くプロシージャ
Sub Line_Test_2()
  With Range("B2:D4").Borders
    .LineStyle = xlContinuous '実線を指定
    .Weight = xlMedium '普通の太さを指定
    .Color = RGB(255, 0, 0) '赤色を指定
  End With
End Sub

Line_Test_2() を実行すると赤い格子線を引いてくれます。
 
VBA 赤い格子線

【VBA】BorderAroundメソッドで外枠線を引く

ところで、Borders コレクションには範囲に外枠線を引かせるオブジェクトが見当たりません。上下左右に一本ずつ線を引けば外枠線になるけど、そんな面倒なことしたくありませんよね。そこで登場するのが BorderAround メソッドです。Range オブジェクトに BorderAround メソッドを使って外枠線を引いてみましょう。

'[VBA] 青色の外枠線を引くプロシージャ
Sub Line_Test_3()
   Range("B2:D4").BorderAround ColorIndex:=5, Weight:=xlThick
End Sub

Line_Test_3() を実行すると、下の図のような青い外枠線が描かれます。
 
VBA 青い外枠線

コメント

  1. あとりえこばと より:

    [ChatGPT] Excel VBAを使用して罫線を引くには、RangeオブジェクトのBorderプロパティを使用します。以下のコード例では、A1からB3までのセル範囲に罫線を引く方法を示します。

    Sub DrawBordersInExcel()
        Dim rng As Range
        Set rng = Range("A1:B3")
        
        With rng.Borders
            .LineStyle = xlContinuous ' 線のスタイル(xlContinuousは連続の線)
            .Weight = xlThin ' 線の太さ(xlThinは細い線)
            .ColorIndex = xlAutomatic ' 線の色(xlAutomaticは自動色)
        End With
    End Sub

    このコードでは、Rangeオブジェクトを使用してセル範囲を指定し、Bordersプロパティを使用して罫線の設定を行っています。Withステートメントを使用することで、範囲内の罫線全体に対して同じ設定を適用することができます。上記の例では、連続の細い線(xlContinuous、xlThin)が自動色(xlAutomatic)で設定されます。

    Word VBAを使用して罫線を引くには、TableオブジェクトのBordersプロパティを使用します。以下のコード例では、ドキュメント内の最初の表に罫線を引く方法を示します。

    Sub DrawBordersInWord()
        Dim tbl As Table
        Set tbl = ActiveDocument.Tables(1)
        
        With tbl.Borders
            .InsideLineStyle = wdLineStyleSingle ' 内部の線のスタイル(wdLineStyleSingleは連続の線)
            .OutsideLineStyle = wdLineStyleSingle ' 外側の線のスタイル
            .InsideLineWidth = wdLineWidthThin ' 内部の線の太さ(wdLineWidthThinは細い線)
            .OutsideLineWidth = wdLineWidthThin ' 外側の線の太さ
            .InsideColor = wdColorAutomatic ' 内部の線の色(wdColorAutomaticは自動色)
            .OutsideColor = wdColorAutomatic ' 外側の線の色
        End With
    End Sub

    このコードでは、Tableオブジェクトを使用して最初の表を指定し、Bordersプロパティを使用して罫線の設定を行っています。Withステートメントを使用することで、内部および外側の罫線に対して同じ設定を適用することができます。上記の例では、連続の細い線(wdLineStyleSingle、wdLineWidthThin)が自動色(wdColorAutomatic)で設定されます。