Excelで100行を超えるような縦長の表を扱うとき、どこからどこまでが1グループなのかが見づらくなりがちです。確認ミスや操作ミスも起きやすくなります。
この記事では、一定行ごとに太罫線や背景色を自動で設定して表を見やすく区切るマクロを解説します。
一定行ごとに太罫線を引いて表を区切るには?
100行ごとに太い横線を引き、表をブロックで把握しやすくするマクロです。
Sub AddBorderEvery100Rows()
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 100行ごとに上辺に太罫線を引く
For i = 2 To lastRow
If (i - 1) Mod 100 = 0 Then
With Range(Cells(i, 1), Cells(i, Columns.Count).End(xlToLeft)).Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
End If
Next i
End Sub
101行目・201行目・301行目…のタイミングで太い横線が入ります。(i - 1) Mod 100 = 0 という条件が「100の倍数行の直前」を検出する計算式です。
交互に背景色を変えて読みやすくするには?
50行ごとに背景色を交互に切り替えて、グループを色で区別する例です。
Sub AlternateColorEvery50Rows()
Dim lastRow As Long
Dim i As Long
Dim colorFlag As Boolean
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
colorFlag = False
For i = 2 To lastRow
If (i - 2) Mod 50 = 0 Then
colorFlag = Not colorFlag
End If
If colorFlag = True Then
Rows(i).Interior.Color = RGB(240, 240, 240) ' 薄いグレー
Else
Rows(i).Interior.ColorIndex = xlNone ' 色なし
End If
Next i
End Sub
colorFlag を50行ごとに反転させることで、グレー→なし→グレー…と交互に塗り分けます。
区切り間隔を変えるには?
100行・50行の数値を変えるだけで任意の間隔に調整できます。たとえば10行ごとなら Mod 10、20行ごとなら Mod 20 に変更するだけです。
まとめ
(i - 1) Mod 100 = 0の条件で「100行ごと」を検出できるBorders(xlEdgeTop).Weight = xlMediumで太い横罫線を引ける- Boolean フラグを使うと、50行ごとに背景色を交互に切り替えられる
Modの数値を変えるだけで任意の間隔に変更できる- 月次明細表や1000件超の一覧など大量データほど視認性向上の効果が大きい
よくある質問
罫線の太さを変えることはできますか?
できます。.Weight プロパティで xlThin(細線)・xlMedium(中線)・xlThick(太線)の3種類から選べます。区切りの目立ち具合に合わせて調整してください。
罫線ではなく行の高さで区切りを表現できますか?
できます。Rows(i).RowHeight = 20 のように高さを指定するコードを If ブロック内に追加すれば、特定行の高さを変えて視覚的な区切りを表現できます。
実行するたびに罫線が重複して引かれませんか?
重複します。実行前に Cells.Borders.LineStyle = xlNone で全罫線をクリアするか、マクロ先頭に既存の罫線を削除する処理を入れると安全です。
特定の列範囲だけに罫線を引くことはできますか?
できます。Range(Cells(i, 1), Cells(i, Columns.Count).End(xlToLeft)) の部分を Range(Cells(i, 1), Cells(i, 5)) のように固定列で指定すれば、A〜E列だけに罫線を引けます。
印刷時も区切りがわかりますか?
わかります。罫線と背景色はどちらも印刷に反映されます。印刷プレビューで確認してから本番印刷することをおすすめします。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



