【マクロVBA】行の高さ・列の幅を取得・変数へ格納し、別の行や幅に反映・変更させる方法

行・列操作

前回は行の高さ・列の幅を変更する方法についてまとめました。

前回の記事はこちらから☟

【マクロVBA㉜】行の高さ・列の幅を指定の数字・ポイント・センチに変更、自動調整する方法 ► 独学エクセル塾 (dokugakuexcel.com)

今回は指定した行の高さ・列の幅を取得する方法、さらに活用する方法について紹介したいと思います。

それでは見ていきましょう。




■忙しい人向けのコピペ用プログラム

青文字をカスタムして使用してください

・行の高さ

Sub 行の高さを変数Nに格納()
Dim N As Variant
N = Rows(ここに行番号を入力).RowHeight
End Sub

・列の幅

Sub 列の幅を変数Nに格納()
Dim N as Variant
N= Columns(ここに列番号を入力).Width
End Sub

■行の高さを取得する

・取得方法


まず行の高さを取得する方法を見てみましょう。
プログラムはこのようになります。

変数・出力先=Rows(取得したい行番号).RowHeight

RowHeight はHeight でも構いません。

では見本で変数N3行目の高さを格納してみましょう。

Sub 行の3行目の高さを変数Nに格納()

Dim N As Variant

N = Rows(3).RowHeight

End Sub

実行した結果はこちらです。

変数Nに「13.2」が格納されていますね。
実際に行の高さを確認すると「13.2」なので機能している事がわかります。

・活用方法

では先程取得した行の高さを活用してみましょう。

今回は見本として3行目の高さ4から6行目にも反映させてみたいと思います。

ではプログラムです。

Sub 行の3行目の高さを4から6行目に反映()

Dim N as Variant,A as Long

N= Rows(3).RowHeight

For A=4 to 6 step 1
Rows(A).RowHeight=N
Next A

End Sub

実行した結果はこのようになります。

狙い通り3行目の高さを4から6行目に反映させる事ができました。

・複数行の行の高さを取得する

今度は複数行の行の高さの取得方法を見ていきましょう。
これまではRowHeightを使用して行の選択をしてきましたが、RowHeightは1行のみしか対応出来ないので「Height」を使用します。

使用方法としては
変数・出力先=Rows(“先頭行:最終行”).Height
のように使用します。

では例をみていきましょう。

今回は3行目から6行目までの行の高さをまとめて取得してみたいと思います。

プログラムはこのようになります。

Sub 行の3行目から6行目までの高さを変数Nに格納()

Dim N As Variant

N = Rows(“3:6”).Height

End Sub

結果はこのようになります。

行数の高さはすべて13.2にしています。
3から6行目の行の高さの和は「52.8」なので問題なく機能していますね。

■列の幅を取得する

・取得方法


次に列の幅を取得する方法を見てみましょう。
プログラムはこのようになります。

変数・出力先=Columns(取得したい行番号). ColumnWidthまたはWidth

ColumnWidthとWidthを扱う上での注意点は下記の通りです。

ColumnWidthは幅の設定する際の数値に用いられる単位で半角文字1文字を「1」に置き換えた数値ですが
Widthは行の高さでも用いられる「ポイント」と呼ばれる単位なので
Widthで取得した値を別の列に反映させても列の幅は異なってしまいます

では見本で変数NEの高さを格納してみましょう。

Sub E列目の幅を変数Nに格納()

Dim N as Variant

N= Columns(5).Width

End Sub

実行した結果はこちらです。

変数Nに「8.11」が格納されていますね。
実際に列の幅を確認すると「8.11」なので機能している事がわかります。

・活用方法

では先程取得した列の幅を活用してみましょう。

今回は見本としてB列目の幅DからF列目にも反映させてみたいと思います。

ではプログラムです。

Sub B列の幅をDからF列目に反映()

Dim N as Variant,A as Long

N= Columns(2).ColumnWidth

For A=4 to 6 step 1
Columns(A).ColumnWidth=N
Next A

End Sub

実行した結果はこのようになります。

狙い通りB列目の幅をDからF列目に反映させる事ができました。

・複数列の列の幅を取得する

では今度に複数列の列の幅の取得方法を見ていきましょう。
これまではColumnWidthを使用して列の選択をしてきましたが、ColumnWidthは1行のみしか対応出来ないので「Width」を使用します。

ここで再度、「ColumnsWidth」と「Width」の違いを見てみましょう。

ColumnsWidth:既定フォントの文字数。列の幅を決める際はこちらの数値となる
Width:行の高さと同じ「ポイント」と呼ばれる単位

では実行してみましょう。

使用方法としては
変数・出力先= Columns(“先頭列の英字:最終列の英字”). Width
のように使用します。

では例をみていきましょう。

今回はC列目からE列目までの列の幅をまとめて取得してみたいと思います。

プログラムはこのようになります。

Sub C列目からE列目までの幅を変数Nに格納()

Dim N as Variant

N= Columns(“C:E”). Width

End Sub

結果はこのようになります。

CからE行目の列の幅の和は「144」ポイントという事がわかりました。

⬛︎応用について

これまでは行の高さ・列の幅の取得から活用まで見てきました。
そこで行の高さと列の幅の単位の違いもわかりましたね。

この違いで、例えば正方形のセルを作るにはひと工夫必要になります。

より詳しい違いや長さを揃えるためにはといった内容で別の記事にまとめてますので参考にしてみてください。

記事はこちらから☟

行の高さと列の幅の数値が異なる理由!単位の説明や長さを揃えて正方形にする方法など ► 独学エクセル塾 (dokugakuexcel.com)

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

Slicer.RowHeight プロパティ (Excel) | Microsoft Learn

Range.ColumnWidth プロパティ (Excel) | Microsoft Learn

■まとめ

いかがだったでしょうか。
行の高さ・列の幅を取得して他の行・列にも反映させたりなど様々な事ができますね。

ぜひ活用してみてください。

それでは次回の記事でお会いしましょう。

コメント