Excelで一覧表を作成する際、すべての行に罫線を引くと空白行まで印刷されてしまったり、見た目が煩雑になったりすることがあります。
特に帳票や提出資料では、「実際にデータが入力された行だけ」罫線を引くという処理が好まれます。
手作業で行うと確認と選択が面倒ですが、VBAを使えば簡単に自動化できます。
入力されている行にだけ罫線を適用するマクロ
次のコードは、A列に値が入力されている行だけに対して、その行のA〜E列に外枠の罫線を引く処理です。
Sub setBorderIfValueExists()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If Cells(i, 1).Value <> "" Then
With Range(Cells(i, 1), Cells(i, 5)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
End If
Next i
End Sub
このコードでは次のような動きになります。
- A列の2行目から最終行までをチェックします。
- A列に何かしらの値が入っている行に対して、A〜E列に罫線を適用します。
- 空白の行はスキップされ、見た目がスッキリした一覧表になります。
罫線の種類や太さは .LineStyle や .Weight で調整できます。
実装するメリット
このマクロを使うと、作業の効率と資料の見栄えを同時に高めることができます。
- 空白行に無駄な罫線が引かれないため、印刷時もスマートなレイアウトになる
- 手作業で罫線を引く時間を削減
- 入力データの有無で動作が変わるため、使い回しのテンプレートでも対応可能
- 範囲を調整すれば柔軟にカスタマイズ可能
たとえば、チェックリストや申請書のような業務資料では、見た目の整った出力結果がそのまま信頼感にもつながります。
応用:列の増減や対象範囲のカスタマイズ
必要に応じて、処理対象の列数や開始行を変えることもできます。
たとえば、A〜H列まで罫線を引きたい場合は、次のように変更できます。
With Range(Cells(i, 1), Cells(i, 8)).Borders
また、開始行を1行目からにすれば、タイトル行にも罫線を引くことができます。
なお、対象列がA列以外になる場合は、空白チェックを Cells(i, 列番号) に変更するだけで応用が可能です。
まとめ
行ごとに罫線を引く作業は単純ながら、見栄えや作業効率に大きく影響します。VBAを活用することで、次のようなメリットが得られます。
- 入力された行のみを判別し、自動で罫線を引くことができる
- 一覧表や帳票が見やすくなり、印刷時の仕上がりも向上する
- テンプレートとの組み合わせで、どんなデータにも柔軟に対応可能
マクロを通じて、「誰が使っても整った資料」ができるようになるのは、大きな業務改善の一歩です。シンプルな処理だからこそ、まずは取り入れてみてください。


