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の最終行)に対して罫線を設定します。