行の高さ調整
Excelでは「行の高さ」を自由に変えられます。VBAで操作すると、複数行を一括で整えたり、自動調整したり、条件に応じて高さを変えることができます。初心者向けに最短コードから応用例まで整理しました。
基本:行の高さを直接指定
Sub RowHeight_Basic()
'3行目の高さを20ポイントに設定
Rows(3).RowHeight = 20
'複数行(2〜5行)の高さをまとめて設定
Rows("2:5").RowHeight = 25
End Sub
VB- ポイント:
RowHeightプロパティに数値を代入するだけ。単位は「ポイント」。- 複数行を範囲指定すれば一括で変更可能。
自動調整(AutoFit)
Sub RowHeight_AutoFit()
'2〜10行の高さを内容に合わせて自動調整
Rows("2:10").AutoFit
'シート全体の行を自動調整
Cells.Rows.AutoFit
End Sub
VB- ポイント:
AutoFitはセルの内容に合わせて高さを自動調整。- 長文や改行があるセルでも最適な高さにしてくれる。
条件付きで高さを変える
Sub RowHeight_ByCondition()
Dim last As Long, r As Long
last = Cells(Rows.Count, "B").End(xlUp).Row
For r = 2 To last
If Cells(r, "B").Value = "重要" Then
Rows(r).RowHeight = 30 '強調したい行は高めに
Else
Rows(r).RowHeight = 15 '通常は低めに
End If
Next
End Sub
VB- ポイント:
- 値に応じて高さを変えると「見やすい表」になる。
- ループで行ごとに条件判定。
最終行まで一括調整
Sub RowHeight_ToLastRow()
Dim last As Long
last = Cells(Rows.Count, "A").End(xlUp).Row
Rows("2:" & last).RowHeight = 18
End Sub
VB- ポイント:
- データが毎回変わる表でも、最終行まで自動で高さを揃えられる。
例題で練習
例題1:見出し行を強調(高さ30)、データ行は高さ18
Sub Example_HeaderAndData()
Rows(1).RowHeight = 30
Dim last As Long
last = Cells(Rows.Count, "A").End(xlUp).Row
Rows("2:" & last).RowHeight = 18
End Sub
VB例題2:選択範囲の行を自動調整
Sub Example_AutoFitSelection()
If TypeName(Selection) = "Range" Then
Selection.Rows.AutoFit
End If
End Sub
VB例題3:文字数が多い行だけ高さを広げる
Sub Example_AdjustByLength()
Dim last As Long, r As Long
last = Cells(Rows.Count, "C").End(xlUp).Row
For r = 2 To last
If Len(Cells(r, "C").Value) > 20 Then
Rows(r).RowHeight = 25
Else
Rows(r).RowHeight = 15
End If
Next
End Sub
VB実務の落とし穴と対策
- 高さが固定される: AutoFit を使わないと、文字が隠れることがある。必要に応じて自動調整を組み合わせる。
- 結合セルの扱い: 結合セルは AutoFit が効かない場合あり。結合を避けるか、手動で高さを設定。
- 大量行で遅い: 1行ずつループすると遅い。まとめて範囲指定して高さを変えると高速。
- 見た目の統一: 見出し行だけ高めに、データ行は揃えておくと表が読みやすい。
