Excel VBA

【Excel VBA】指定セル範囲に罫線を引く

この記事ではExcel VBAで罫線を引く方法について、使用例を交えてご説明します。

罫線の種類

VBAで使用する罫線は様々な設定が可能です。

・線種(LineStyle)

・線幅(Weight)

・線色(Color)

それぞれの設定について解説します。

線種(LineStyle)

VBAで設定できる罫線の線種は以下になります。

<線種><対応コード>
なしxlLineStyleNone
実線
xlContinuous
点線
xlDot
二点鎖線
xlDashDotDot
一点鎖線
xlDashDot
破線
xlDash
二本線
xlDouble

線幅(Weight)

VBAで設定できる罫線の線幅が以下になります。

線幅対応コード
細線xlHairline
通常xlThin
太線xlMedium
極太線xlThick

線色(Color)

VBAで設定できる罫線の色はColorプロパティ(RGB)やColorIndexで設定します。

実際に引いてみよう(サンプルコード)

その前に、指定セルの4辺の内のどこに罫線を引くかを指定する必要があります。

指定の仕方は下図のよう、xEdge + 上下左右(Top, Bottom, Left, Right)で指定します。

それでは、実際に罫線を引くプログラムを書いてみます。

まず、「B2」セルの下側に赤の罫線を引いてみます。

Sub 罫線を引く()

    ''B2セルに赤色の下線を引く
    With Range("B2").Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = RGB(255, 0, 0)
    End With
        
End Sub

<実行後>

このように、指定した「B2」セルの下側に赤線が引かれました。

では次に、「B2」~「E10」セル範囲で格子状に罫線を引きます。

格子線を引く時は、先述した上下左右の指定をしません。


Sub 罫線を引く_格子状()

    ''B2~E10セルに格子線を引く
    With Range("B2:E10").Borders    ’上下左右の指定をしない
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
        
End Sub

<実行前>

<実行後>

私の経験上では、罫線を引く際に最も使用する頻度が高いのがこの格子線になります。

実用例(サンプルコード)

ここからは私がコーディングする中でよく使う方法をサンプルにしてご紹介します。

別シートを参照して一覧を作成する(同時に罫線も引く)

参照シート:「生徒点数」

出力シート:「生徒点数_理系」

プログラムの内容:「生徒点数」シート内から、理系科目(数学、理科)だけを抽出し、各科目点数と合計点数を出力し、最後に格子状の罫線を引く。

シート「生徒点数」

シート「生徒点数_理系」

Sub 理系科目の抽出()

    Dim from_ws As Worksheet
    Dim to_ws As Worksheet
    
    Dim i As Long
    Dim lR As Long
    
    Dim math_C As Integer
    Dim science_C As Integer
    Dim math_Point As Long
    Dim science_Point As Long
    Dim sum_Point As Long
    
    With ThisWorkbook
        Set from_ws = .Worksheets("生徒点数")
        Set to_ws = .Worksheets("生徒点数_理系")
    End With
    
    lR = from_ws.Range("A" & Rows.Count).End(xlUp).Row
    
    math_C = 6
    science_C = 8
    
    For i = 2 To lR
        
        math_Point = from_ws.Cells(i, math_C).Value
        science_Point = from_ws.Cells(i, science_C).Value
        sum_Point = math_Point + science_Point
    
        to_ws.Cells(i, 1) = from_ws.Cells(i, 1).Value
        to_ws.Cells(i, 2) = from_ws.Cells(i, 2).Value
        to_ws.Cells(i, 3) = from_ws.Cells(i, 3).Value
        to_ws.Cells(i, 4) = from_ws.Cells(i, 4).Value
        to_ws.Cells(i, 5) = math_Point
        to_ws.Cells(i, 6) = science_Point
        to_ws.Cells(i, 7) = sum_Point
    
    Next i
    
    lR = to_ws.Range("A" & Rows.Count).End(xlUp).Row
    to_ws.Range("A1:G" & lR).Borders.LineStyle = xlContinuous


End Sub

<実行結果>

まとめ

罫線の使用率が最も高いのはおそらく格子罫線だと思いますので、その基本的な部分だけ知っていればいつでも応用できそうですね。

Excelは表計算ソフトですから、VBAで自動出力機能なんかを作成した際は、一緒に罫線デザインも考えてみると良いかも知れません。


  • この記事を書いた人

よしこた

1992年生まれの牡羊座。
大学卒業後は地元の中小企業に就職し、
1年後にIT部門を立ち上げ、ITコンサルティング事業を始める。
クラウドソーシングをしつつ、ビギナー目線で記事を執筆します。

服やアニメが好き。仕事も割と好き。

-Excel VBA