RowHeightプロパティ
行の高さの取得や設定にはRowHeightプロパティを利用します。
行の高さの取得を複数行をまとめて取得する場合、各行の高さが全て同じであれば取得できますが、行ごとに高さが異なる場合は取得できません。その場合は1行ごとに取得する必要があります。
行の高さの設定は1度にまとめて複数の行に対して同じ高さを設定することが可能です。
構文
1 |
Rangeオブジェクト.RowHeight |
Rangeオブジェクトにはセル範囲を設定します。Range(“2:3”)のように行全体を選択することも出来ますが、Range(“A1”)のようにセルを指定しても1行目に対して行の高さの取得や設定を行うことが可能です。
取得および設定する際の値の単位はポイントになります。1ポイントは1/72インチで約0.35ミリです。100ポイントであれば3.5cmになります。
基本的な設定と取得のサンプルコード
複数行の高さを1度に取得しようとしても、行ごとに高さが異なるため取得できない仕様になっており、取得した値はNullになります。
5行目から10行目は同じ高さの複数行を取得し、それ以降は異なる高さの行を複数行取得しています。
前者は同じ高さのためRowHeightプロパティで取得できますが、後者は異なる高さのため取得できず基本的にはNullが返ります。例外として、未保存のBook1などのブックの場合でFomulaArrayプロパティやTextプロパティが””になっているはNullではなく選択範囲の一番上の行の高さが返ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub MultiRowHeightTest() Dim iRow '// 1行目に30、2行目に30、と同じ高さを設定 Range("1:1").RowHeight = 30 Range("2:2").RowHeight = 30 '// 1行目と2行目をまとめて取得すると高さが同じため30を取得 iRow = Range("1:2").RowHeight Debug.Print iRow '// 1行目に30、2行目に40、と異なる高さを設定 Range("1:1").RowHeight = 30 Range("2:2").RowHeight = 40 '// 再度1行目と2行目をまとめて取得すると高さが異なるためNullを取得 iRow = Range("1:2").RowHeight Debug.Print iRow End Sub |
実行結果
30
Null
複数行の取得のサンプルコード
複数行の高さを取得する場合は各行の高さが同じとは限らないため、1行ずつ取得および設定することになります。
以下は1行目から5行目の高さを行ごとに取得および設定をするサンプルコードです。
注意点として、行全体を表すにはRowsプロパティを利用する必要があります。
もしループ処理で、For Each r in Selection などと書くと、1行目から5行目の全セルをループすることになり、A1、B1、C1、、、XFD1、A2、、、XFD2、、、と時間が掛かることになるため注意しましょう。Rowsプロパティを使えばループ回数は行数と同じで済みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub GetMultiRowHeightTest() Dim r As Range '// Rangeオブジェクト Dim iRowHeight '// 行の高さ Dim i '// ループカウンタ Dim iRowCount '// 選択範囲の行数 '// 複数行の取得 Range("1:5").Select iRowCount = Selection.Rows.Count '// 選択範囲の先頭行から最終行までループ For i = 1 To iRowCount '// 行範囲を取得 Set r = Selection.Rows(i) '// 指定行の高さを取得 iRowHeight = r.RowHeight Debug.Print iRowHeight '// 指定行の高さを設定 r.RowHeight = 15 Selection.Rows(i).RowHeight = 15 Next End Sub |
Rangeオブジェクトの書き方
RowHeightプロパティはRangeオブジェクトを指定する必要があります。
Rangeオブジェクトにはいろいろな書き方が可能なため、場面ごとに書き方を変える必要が出てきます。
以下のようにRangeオブジェクトの書き方にはいくつもありますので、状況に応じて使い分けましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Sub PatternRowHeight() Dim iRow '// ▼取得 '// 選択範囲 iRow = Selection.RowHeight '// 選択シートの8行目 iRow = ActiveSheet.Rows(8).RowHeight '// 1行目1列目 iRow = Cells(1, 1).RowHeight '// A1セル(=1行目) iRow = Range("A1").RowHeight '// A列全て(=1行目から最終行の全ての行) iRow = Range("A:A").RowHeight '// 1行目 iRow = Range("1:1").RowHeight '// ▼設定 '// 選択範囲 Selection.RowHeight = 30 '// 選択シートの8行目 ActiveSheet.Rows(8).RowHeight = 30 '// 1行目1列目 Cells(1, 1).RowHeight = 30 '// A1セル(=1行目) Range("A1").RowHeight = 30 '// A列全て(=1行目から最終行の全ての行) Range("A:A").RowHeight = 30 '// 1行目 Range("1:1").RowHeight = 30 End Sub |