当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

【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 コレクションの引数に何も指定しないようにします。ちょっとややこしいけど、Borders コレクション自体が「格子線を引く」というプロパティを有しているのです。”コレクション” だから、Set ステートメントに入れて “オブジェクト” として扱えないので、コードの書き方は次のようになります。

'[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 赤い格子線

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. あとりえこばと より:

    【AI解説】VBAでExcelやWordに罫線を引く方法

    [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)で設定されます。

タイトルとURLをコピーしました