📊 Excel VBA Top100
🎨

SetRowHeight

書式設定

選択行の高さを指定した値に設定します

選択した行または指定した行の高さをポイント数で正確に設定するマクロです。Excelの行高さはドラッグやAutoFitで設定できますが、複数行を同じ高さにそろえるには一手間かかります。このマクロは複数の行に対して同じ高さを一括設定したり、特定の行パターンで高さを変えたりする処理を自動化します。帳票・シート設計・印刷レイアウトの管理に役立ちます。内部ではRows(n).RowHeightプロパティに数値を直接指定しており、AutoFitRowsとは異なり内容に関わらず常に一定の高さを維持します。帳票のように行ごとの高さを厳密に管理したい場面や、複数シートで行の高さを完全に一致させたい場面に適しています。AutoFitRowsで整えた後、ヘッダー行だけ本マクロで高さを固定するといった組み合わせも有効です。

SetRowHeight デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 対象行を選択してから SetRowHeight を実行します

🎯 活用シーン

  • ✓帳票や入力フォームで行高さを統一して、印刷時に整ったレイアウトになるよう管理したいとき
  • ✓ヘッダー行を標準より高く設定してタイトルと本文の区別を明確にし、資料の読みやすさを向上させたいとき
  • ✓複数のシートにわたる同種の表で行高さを統一して、ブック全体のデザインの一貫性を保ちたいとき
  • ✓複数のシートで構成された帳票の行高さをすべて統一し、ブック全体で一貫したレイアウトに仕上げたいとき
  • ✓ヘッダー行を通常より高く固定して、タイトルと本文の視覚的な区別を明確にしたいとき

💡 実装のヒント

  • ▸行高さの単位はポイント(pt)です。1cmは約28.35ptに相当します。標準的な行高さはExcelの初期設定で13.5pt(約0.48cm)です。
  • ▸特定の行(ヘッダー行・小計行など)を標準より高くしてセクションの区切りを視覚化する際に使用すると、表の構造が分かりやすくなります。
  • ▸AutoFitRowsと組み合わせると、コンテンツに合わせた自動調整の後に特定の行だけ固定高さに設定する処理が実現できます。
  • ▸複数行に異なる高さを一括設定したい場合は、行番号と高さのペアを配列で定義してループ処理してください。
  • ▸印刷時に行が途中で改ページされないよう、事前に印刷プレビューで確認しながら高さを調整することをお勧めします。

💻 VBAコード

' SetRowHeight
' -----------------
' Macro Name: SetRowHeight
' Description: 選択行の高さを指定した値に設定します
' Parameters: なし
' Returns: なし
' Usage: 対象行を選択してから SetRowHeight を実行します
' -----------------

Sub SetRowHeight()
    On Error GoTo ErrorHandler

    Dim rng As Range
    Dim heightStr As String

    If TypeName(Selection) <> "Range" Then
        MsgBox "行を選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set rng = Selection

    heightStr = InputBox("行高を入力してください(ポイント単位)", "行高", "20")
    If heightStr = "" Then Exit Sub
    If Not IsNumeric(heightStr) Then
        MsgBox "数値を入力してください", vbCritical, "エラー"
        Exit Sub
    End If

    rng.EntireRow.RowHeight = CDbl(heightStr)

    MsgBox "行高を " & heightStr & " に設定しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub