更新日:、 作成日:

VBA 行の高さを調整する

はじめに

Excel VBA マクロの行で高さを調整する方法を紹介します。

Rows(2).RowHeight または Range("A2").EntireRow.RowHeight プロパティから、行「2」の高さを取得または設定できます。

AutoFit メソッドから、行の高さを自動調整できます。

行を指定して取得するには「行を取得する」をご覧ください。
列の幅を調整するには「列の幅を調整する」をご覧ください。

行の高さを取得する

Rows の引数に行番号を指定すると、その行の高さを取得できます。

行「2」の高さを取得するには Rows(2).Height または Rows(2).RowHeight を入力します。

Dim d As Double
d = Rows(2).Height
d = Rows(2).RowHeight
Debug.Print(d)

Range の引数にセル名を指定すると、そのセルを取得できます。EntireRow からその行を取得できます。

セル「A1」の行を高さを取得するには Range("A1").EntireRow.Height または Range("A1").EntireRow.RowHeight を入力します。

Dim d As Double
d = Range("A1").EntireRow.Height
d = Range("A1").EntireRow.RowHeight
Debug.Print(d)

1 行の高さを取得するとき Height と RowHeight は同じ値を返します。複数行の高さを取得するときに違いがあります。どちらもポイントの単位で取得します。

複数行の高さを取得

行の範囲「2 ~ 3」の高さを取得するには Range("2:3").Height または Range("2:2", "3:3").Height を入力します。

Height は行の範囲の高さの合計を取得します。非表示になっている行の高さは 0 です。

' 2 ~ 3 行目の高さの合計を取得
Dim d As Double
d = Range("2:3").Height        
d = Range("2:2", "3:3").Height
d = Range(Rows(2), Rows(3)).Height
d = Range("A2:A3").EntireRow.Height
Debug.Print(d)

RowHeight は、範囲内のすべての行の高さが同じときに 1 行分の高さを取得します。違う高さが含まれているときは Null になります。

Dim d As Double
d = Range("2:3").RowHeight ' 2 ~ 3 行目の高さが同じなら 1 行分の高さを取得
Debug.Print(d)

行の高さを設定する

行「2」に高さを設定するには Rows(2).RowHeight = 20 を入力します。

Rows(2).RowHeight = 20
1

セル「A1」の行に高さを設定するには Range("A1").EntireRow.RowHeight = 20 を入力します。

Range("A1").EntireRow.RowHeight = 20

Height は読み取り専用なので設定できません。

複数行の高さを設定

複数行の高さをまとめて設定できます。

行の範囲「2 ~ 3」に高さを設定するには Range("2:3").RowHeight = 20 を入力します。

Range("2:3").RowHeight = 20
Range("2:2", "3:3").RowHeight = 20
Range(Rows(2), Rows(3)).RowHeight = 20
Range("A2:A3").EntireRow.RowHeight = 20
2

行の高さを自動設定する

行の高さをセルの値に合わせて自動調整するには AutoFit メソッドを使用します。

行「2」の高さを自動設定するには Rows(2).AutoFit を入力します。

Rows(2).AutoFit                ' 2 行目の高さを自動調整
Range("2:3").EntireRow.AutoFit ' 2 ~ 3 行目の高さを自動調整
Cells.EntireRow.AutoFit        ' シート全体の行の高さを自動調整
3

AutoFit で自動調整すると、その後に変更したセルの値でも行の高さが変更されます。

RowHeight に値を設定すると自動調整が解除されます。

これは Excel の操作と同じです。

別シートの行の高さを取得または設定する

シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。

Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。

sheet1
' Sheet1 の行の高さを設定
Worksheets("Sheet1").Rows(1).RowHeight = 20
Worksheets(1).Rows(1).RowHeight = 20

' Sheet2 の行の高さを設定
Worksheets("Sheet2").Rows(1).RowHeight = 20
Worksheets(2).Rows(1).RowHeight = 20

Sheet1 に Rows を入力すると、自身のシートの行になります。自身を表す Me. が省略されています。

' どちらも同じコード
Dim r As Range
Set r = Rows(1)
Set r = Me.Rows(1)

標準モジュールに Rows を入力すると、開いているシートの行になります。アクティブシートを表す ActiveSheet. が省略されています。

' どちらも同じコード
Dim r As Range
Set r = Rows(1)
Set r = ActiveSheet.Rows(1)