Home » ExcelVBA Rangeオブジェクト » CurrentRegionプロパティ » CurrentRegionの行高を変更するには

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba currentregionの一番下のセルまでの行の高さを変更」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で、RangeオブジェクトのCurrentRegionプロパティを使って、アクティブセル領域全体の、行の高さを変更するには、どのようなコードを書けばいいのかを探していた方による検索です。

[スポンサードリンク]

行の高さはRange.Heightプロパティでは変更できない

以下のようなSubプロシージャを作成して試してみたものの、実行時エラーが発生したのかもしれません。

Sub CurrentRegionの行高を変更する_エラーになる例1()
 Range("A1").CurrentRegion.Height = 32
End Sub

上記のマクロを実行すると、
「実行時エラー'424' オブジェクトが必要です。」
というエラーが発生してしまいます。

「オブジェクトが必要です。」
というエラーメッセージですから、行全体を表すRangeオブジェクトを取得するためにRange.EntireRowプロパティを使うということをご存じであれば、以下のようなプロシージャを試したかもしれません。

Sub CurrentRegionの行高を変更する_エラーになる例2()
 Range("A1").CurrentRegion.EntireRow.Height = 32
End Sub

上記のマクロでもやっぱり、先ほど同じ実行時エラーが発生します。

オブジェクトブラウザーを確認してみると、下図のとおりRangeオブジェクトのHeightは読み取り専用のプロパティです。

 VBAでCurrentRegionの行高を変更する

読み取り専用のプロパティであるにも関わらず、値を設定しようとしているために、実行時エラーが発生しているわけです。

CurrentRegionの行高を変更するサンプルマクロ

で、どうすればいいかというと、以下のようなSubプロシージャです。
Sub CurrentRegionの行高を変更する()
 Range("A1").CurrentRegion.RowHeight = 32
End Sub

上記のマクロを実行すると、A1セルのアクティブセル領域の、各行の高さが、32に設定されます。

つまり、行の高さを変更するには、RangeオブジェクトのRowHeightプロパティを使うということです。

 VBAでCurrentRegionの行高を変更する

Heightプロパティとは何の高さなのか

ではRange.Heightとは何の高さなのか気になる方もいらっしゃるでしょう。

A1:D1セルに適当にデータを入力しておいて、先の動作したマクロを実行して、1:4行目の各行の高さを「32」にしておいてから、以下のマクロを実行してみましょう。

Sub CurrentRegionを確認する()
 Dim rng As Range
 Set rng = Range("A1").CurrentRegion
 Stop
End Sub

Stopステートメントで一時停止したら、ローカルウィンドウでRowHeightとHeightを確認しましょう。

RowHeightは、先のマクロで「32」に設定したので32あたりの数値が表示されているはずです。

これに対してHeightには、「32×4」あたりの数値が表示されるはずです。

つまりRowHeightは各行の高さであるのに対して、Heightはセル領域全体の高さということです。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » CurrentRegionプロパティ » CurrentRegionの行高を変更するには

「CurrentRegionプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.