VBAでセルの書式設定(罫線)

投稿日: 2024年6月11日

Excel VBAでセルに罫線を設定するには、Bordersオブジェクトを使用します。Bordersオブジェクトには、罫線のスタイル、色、線の太さなどを設定できるさまざまなプロパティがあります。

罫線の設定

セルの特定の辺(上、下、左、右)や、内部の罫線を設定することもできます。Bordersオブジェクトの各辺を示す定数を使用します。

項目説明
xlEdgeLeft左罫線.Borders(xlEdgeLeft)
xlEdgeTop上罫線.Borders(xlEdgeTop)
xlEdgeBottom下罫線.Borders(xlEdgeBottom)
xlEdgeRight右罫線.Borders(xlEdgeRight)
xlInsideVertical縦罫線
(セル範囲内)
.Borders(xlInsideVertical)
xlInsideHorizontal横罫線
(セル範囲内)
.Borders(xlInsideHorizontal)
囲い.Borders
.Color.Borders.Color = RGB(0, 0, 0)
基本的な罫線の設定

以下は、セルA1に罫線を設定する基本的な例です。

Sub SetBorders()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    With ws.Range("A1").Borders
        .LineStyle = xlContinuous ' 罫線のスタイル
        .Color = RGB(0, 0, 0) ' 罫線の色(黒)
        .Weight = xlThin ' 罫線の太さ(細い)
    End With
End Sub

以下の例では、セルA1の上罫線と下罫線に異なるスタイルを設定します。

Sub SetSpecificBorders()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    With ws.Range("A1").Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Color = RGB(255, 0, 0) ' 赤色
    End With
    
    With ws.Range("A1").Borders(xlEdgeBottom)
        .LineStyle = xlDash
        .Color = RGB(0, 0, 255) ' 青色
    End With
End Sub
セル範囲の罫線設定

複数のセル範囲に対して罫線を設定することも可能です。以下の例では、範囲A1のすべての外枠に罫線を設定します。

Sub SetRangeBorders()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    With ws.Range("A1:B2").Borders
        .LineStyle = xlContinuous
        .Color = RGB(0, 0, 0)
        .Weight = xlThin
    End With
End Sub
罫線スタイルの種類
項目説明
xlContinuous実線.Borders.LineStyle = xlContinuous
xlDash破線.Borders.LineStyle = xlDash
xlDashDot一点鎖線.Borders.LineStyle = xlDashDot
xlDashDotDot二点鎖線.Borders.LineStyle = xlDashDotDot
xlDot点線.Borders.LineStyle = xlDot
xlDouble二重線.Borders.LineStyle = xlDouble
xlSlantDashDot斜破線.Borders.LineStyle = xlSlantDashDot
xlLineStyleNone罫線なし.Borders.LineStyle =xlLineStyleNone
複数の罫線を一度に設定

以下の例では、範囲A1のすべての辺と内部に罫線を設定します。

Sub SetAllBorders()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    With ws.Range("A1:B2").Borders
        .LineStyle = xlContinuous
        .Color = RGB(0, 0, 0)
        .Weight = xlThin
    End With
    
    With ws.Range("A1:B2").Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Color = RGB(0, 0, 0)
        .Weight = xlThin
    End With
    
    With ws.Range("A1:B2").Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Color = RGB(0, 0, 0)
        .Weight = xlThin
    End With
End Sub

このコードを実行すると、範囲A1のすべての外枠と内部に細い実線の罫線が設定されます。

罫線の太さの種類

Excel VBAでセルの罫線の太さを設定するには、Weightプロパティを使用します。Weightプロパティには以下の定数が使用できます。

項目説明
xlHairline非常に細い線.Borders.Weight = xlHairline
xlThin細い線.Borders.Weight = xlThin
xlMedium中くらいの太さの線.Borders.Weight = xlMedium
xlThick太い線.Borders.Weight = xlThick
基本的な罫線の太さの設定

以下の例では、セルA1の上下の罫線に異なる太さの線を設定します。

Sub SetBorderWeight()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 上罫線を細い線に設定
    With ws.Range("A1").Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    
    ' 下罫線を太い線に設定
    With ws.Range("A1").Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
End Sub

このコードを実行すると、セルA1の上罫線が細い線、下罫線が太い線に設定されます。

セル範囲の罫線の太さを設定

以下の例では、範囲A1の外枠の罫線を太く、内部の罫線を細く設定します。

Sub SetRangeBorderWeight()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 外枠の罫線を太く設定
    With ws.Range("A1:B2").Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    With ws.Range("A1:B2").Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    With ws.Range("A1:B2").Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    With ws.Range("A1:B2").Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    
    ' 内部の罫線を細く設定
    With ws.Range("A1:B2").Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With ws.Range("A1:B2").Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
End Sub
非常に細い線や中くらいの線の設定

以下の例では、セルA1に非常に細い線と中くらいの線を設定します。

Sub SetDifferentBorderWeights()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 左罫線を非常に細い線に設定
    With ws.Range("A1").Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlHairline
    End With
    
    ' 右罫線を中くらいの太さの線に設定
    With ws.Range("A1").Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
End Sub

このコードを実行すると、セルA1の左罫線が非常に細い線、右罫線が中くらいの太さの線に設定されます。

これらのプロパティを組み合わせて使用することで、セルの罫線のスタイルや太さを柔軟に設定できます。これで、Excel VBAを使用してセルの罫線の太さを設定する方法について理解いただけたと思います。

For Nextループを使用した罫線

For Nextループを使用して複数のセル範囲に対して罫線を設定することができます。以下に、For Nextループを使ってセルの範囲に罫線を設定する具体的な方法を示します。

連続した行に罫線を設定する

以下の例では、シートの1行目から10行目までの各行に対して罫線を設定します。

Sub SetBordersWithForLoop()
    Dim ws As Worksheet
    Dim i As Integer
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 1行目から10行目までの罫線を設定
    For i = 1 To 10
        With ws.Rows(i).Borders
            .LineStyle = xlContinuous
            .Color = RGB(0, 0, 0) ' 黒色
            .Weight = xlThin
        End With
    Next i
End Sub
セルの最終行を取得して罫線を設定する例

セルの最終行を取得し、罫線を設定するには、RangeオブジェクトのEndプロパティを使用してデータの最終行を取得し、その範囲に対して罫線を設定します。

Sub SetBordersToLastRow()
    Dim ws As Worksheet
    Dim lastRow As Long
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 最終行の範囲に罫線を設定
    With ws.Range("A1:D" & lastRow).Borders
        .LineStyle = xlContinuous
        .Color = RGB(0, 0, 0)
        .Weight = xlThin
    End With
    
    ' 外枠の罫線を太く設定
    With ws.Range("A1:D" & lastRow).Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    With ws.Range("A1:D" & lastRow).Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    With ws.Range("A1:D" & lastRow).Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    With ws.Range("A1:D" & lastRow).Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThick
    End With
    
    ' 内部の罫線を細く設定
    With ws.Range("A1:D" & lastRow).Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With ws.Range("A1:D" & lastRow).Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
End Sub

このコードを実行すると、シート「Sheet1」の列Aにデータがある最終行を取得し、その範囲(A1からDの最終行)に対して罫線を設定します。

記事