VBAで行の高さや列の幅を取得・変更する方法です。前提となる行・列の取得についてはRows、Columnsの記事で解説しています。
行の高さを取得
Rows(またはRange).Height
Rows(またはRange).RowHeight
※取得される値はポイント単位
たとえばMsgBox Rows(1).Heightとすることで、一行目の高さを取得して表示できます。
"A1").HeightまたはRange("A1").RowHeightでもオッケイです。HeightとRowHeightは、単一行の高さを取得であればどっち使っても同じ結果になります。
HeightとRowHeightのちがい
①Heightは読み取り専用ですが、RowHeightは書き込みにも使えます(後述)。
②Heightは範囲の高さをまとめて取得することができます。
(RowHeightで複数行の高さを取得すると、全て同じ高さの場合一行分の高さを返し、行によって高さが違う場合Nullを返す)
範囲行の高さの取得
"1:3").Heightのようにして範囲行を指定します。Range(
"A1:A3").Heightでも同じ結果になります。。
"A1:A3").HeightでもRange("A1:C3").Heightでも結果は同じです。列幅を取得
Columns(またはRange).ColumnWidth
※取得される値は文字数単位
Columns(またはRange).Width
※取得される値はポイント単位
"A1").ColumnWidthでも同じ意味になります。この8.38は標準フォントの1文字換算で何文字分かを意味し、通常操作で幅を規定する場合もこの単位が使用されます。"A1").Widthの場合、ポイント単位で列幅を取得できます。なお、Widthも読み取り専用のプロパティです。WidthとColumnWidthのちがい
繰り返しになりますが、まとめるとこうなります。
①Widthは読み取り専用ですが、ColumnWidthは書き込みにも使えます(後述)。
②Widthは範囲の幅をまとめて取得することができます。
(ColumnWidthで範囲の列幅を取得すると、全て同じ列幅の場合一列分の幅を返し、列によって幅が違う場合Nullを返す)
③Widthではポイント単位、ColumnWidthでは標準フォントの文字数単位で幅が取得されます。
範囲列の幅の取得
行の高さの変更
"A1").RowHeight = 20でも同じ結果になります。行の高さをまとめて変更
"1:3").RowHeight = 30のように書くか、"A1:C3").RowHeight = 25のようにしても可能です。標準の高さにする
"A1:C3").UseStandardHeight = True)。行数に合わせて自動調整
"1:3").AutoFit)。列幅の変更
Range(
"A1").ColumnWidth = 20でも同じ結果になります。列幅をまとめて変更
"A:C").ColumnWidth = 20のようにするか、"A1:C3").ColumnWidth = 25のようにしてもOKです。標準の幅にする
"A1:C3").UseStandardWidth = True)。文字数に合わせて自動調整
"A:C").AutoFit)。他のシートの行の高さ・列幅を取得/変更
' vba
' 一番左のシートの1列目の幅を表示
MsgBox Worksheets(1).Columns(1).Width
' vba
' Sheet1の1行目の高さを20ポイントに変更
Sheets("Sheet1").Rows(1).RowHeight = 20

コメント