Excel VBA 行の高さを操作|見た目を調整してデータ可読性を向上する方法

 

ExcelVBA  行の高さを操作してデータの可読性を向上させたり、見た目を調整する。 手動で行うと手間がかかる作業を、自動で調整できます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

Excel VBA  行の高さを操作|シーン

以下のシーンで利用します。

1.特定の行の高さを変更(例: タイトル行を目立たせる)

2.選択範囲の行を自動で最適な高さに調整(例: テキストの折り返しに対応)

3.データがない行を高さゼロ(非表示)にする(例: 空白行を省略)

4.シート全体の行の高さを統一する(例: 見た目を整える)

 

Excel VBA 行の高さを操作サンプルコード

1行目の高さを30に設定する

Option Explicit

Sub SetRowHeight() '標準モジュール
    Rows(1).RowHeight = 30
End Sub

・Rows(1).RowHeight = 30 で1行目の高さを30にする
・RowHeight の単位は ポイント(約0.75mm)

選択した行の高さを20に変更する

Option Explicit

Sub SetRowHeight() '標準モジュール
    Rows(1).RowHeight = 30
End Sub

・Rows(1).RowHeight = 30 で1行目の高さを30にする
・RowHeight の単位は ポイント(約0.75mm)

選択した行の高さを20に変更する

Option Explicit

Sub SetSelectedRowHeight() '標準モジュール
    If Not TypeOf Selection Is Range Then
        MsgBox "セルを選択してください。", vbExclamation, "エラー"
        Exit Sub
    End If
    
    Selection.EntireRow.RowHeight = 20
End Sub

・Selection.EntireRow.RowHeight = 20 で選択した行の高さを変更
・選択範囲がセルではない場合にエラーを回避する処理を追加

すべての行の高さを15に統一する

Option Explicit

Sub SetAllRowsHeight() '標準モジュール
    Cells.RowHeight = 15
End Sub

・Cells.RowHeight = 15 で全シートの行の高さを15に変更

5行目の高さを内容に合わせて自動調整

Option Explicit

Sub AutoFitRow() '標準モジュール
    Rows(5).AutoFit
End Sub

・Rows(5).AutoFit でセルの内容に応じて高さを自動調整

選択範囲の行の高さをオートフィット

Option Explicit

Sub AutoFitSelectedRows() '標準モジュール
    If Not TypeOf Selection Is Range Then
        MsgBox "セルを選択してください。", vbExclamation, "エラー"
        Exit Sub
    End If
    
    Selection.EntireRow.AutoFit
End Sub

 

Option Explicit

Sub CopyAllRows() '標準モジュール
    Sheets("Sheet1").UsedRange.Copy Destination:=Sheets("Sheet2").Cells(1, 1)
End Sub

・Selection.EntireRow.AutoFit で選択した行の高さを最適化

A列が空白の行を非表示にする

Option Explicit

Sub HideEmptyRows() '標準モジュール
    Dim ws As Worksheet
    Dim i As Long, lastRow As Long

    Set ws = ActiveSheet
    lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

    For i = 1 To lastRow
        If ws.Cells(i, 1).Value = "" Then
            ws.Rows(i).RowHeight = 0
        End If
    Next i
End Sub

・A列が空白の行を RowHeight = 0 で非表示にする
・lastRow を取得して、最終行までループ処理

非表示の行を元に戻す

Option Explicit

Sub UnhideAllRows() '標準モジュール
    Cells.EntireRow.RowHeight = 15
End Sub

・Cells.EntireRow.RowHeight = 15 で非表示の行もすべて再表示

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

注意点

・行の高さの最小値は0(非表示)、最大値は409
→ Rows(1).RowHeight = 500 のような指定はエラーになる

・オートフィットは結合セルに適用できない
→ AutoFit は 結合セルには動作しない(代わりに .WrapText = True を使う)

・空白行を非表示にする場合は EntireRow.Hidden = True でも可能
→ RowHeight = 0 でも非表示になるが、Hidden = True の方が意図が明確

Rows(5).Hidden = True ' 5行目を非表示
Rows(5).Hidden = False ' 5行目を再表示

・処理速度を向上させるために ScreenUpdating = False を活用
→ 行の高さを一括変更する場合は画面更新を停止すると速くなる

Application.ScreenUpdating = False
'(行の高さを変更する処理)
Application.ScreenUpdating = True

 

Excel VBA 行の高さを操作まとめ

目的 方法
特定の行の高さを変更  Rows(1).RowHeight = 30
選択した行の高さを変更 Selection.EntireRow.RowHeight = 20
全行の高さを統一 Cells.RowHeight = 15
自動調整(オートフィット) Rows(5).AutoFit
選択した行を自動調整 Selection.EntireRow.AutoFit
空白行を非表示 Rows(i).RowHeight = 0
非表示の行を再表示 Cells.EntireRow.RowHeight = 15

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!