VBAで行数が多い表を自動で見やすく区切る方法|Mod・Borders・交互背景色の使い方

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が初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール