【VBA】行の高さを自在に設定する方法

みなさんこんにちはケンケンです。

今回は、ExcelVBAを使って、Excelシートの行の高さを取得して自在に設定する方法をご紹介します。

ひとつのテクニックとして活用できるようにしてみましょう。

VBAで行の高さを設定する

ここでは、「Rows」オブジェクトの「RowHeight」プロパティを使っていきます。

堅苦しい説明は置いておいて、さっそくコードを書いていろいろ試してみましょう。

 

高さの値を取得してみよう

とりあえず書いてみることが重要です。

まず以下のようにシートを用意します。

 

 

「Sheet2」を用意して1行目と2行目の行の幅をあらかじめ変えておきます。

続いてコードを標準モジュールに書き実行します。

するとイミディエイトウィンドウに以下のように表示されます。

 

 

この「84」と「42.75」は行の幅の値を表します。

試しに2行目にマウスポインタをあてて行の高さを調べてみましょう。

 

どうやら正確に値を取得できたみたいですね。

高さを自在に設定してみよう

RowHeightプロパティの特性を活かして自在に高さを設定できるようにコードを書いてみましょう。

その前に完成形をお見せします。

 

E2セルに始まりの行、F2セルに終わりの行、そしてG2セルに設定したい行の幅を入力し、ボタンを押すと対象行の幅が変更されるという仕様です。

 

それでは、コードを一気にお見せします。

①②始まりの行と終わりの行を格納する変数を用意します。

③E2セルに入力された始まりの行を表す数値を変数「cellStart」に格納します。

④F2セルに入力された終わりの行を表す数値を変数「cellLast」に格納します。

⑤⑥もし、終わりの行より始まりの行の方が小さい番号だったら、つまりcellLast – cellStartがマイナスの値になったらメッセージボックスで注意を促し、プログラムを終了します。

ここは、いろいろ制御をかけるべきところなのでエラー対策はしっかりしましょう。

数字以外は入力できないとかも必要ですね。

今回はそこまで対策はしません。

⑦G2セルに入力された値を先ほど指定した範囲の行の高さとして割り当てます。

「Rows(cellStart & “:” & cellLast)」の部分はややこしいですが、形として覚えてしまったほうがいいかもしれません。

「&」がひとつ抜けてもエラーになってしまうので気を付けてください。

 

最後にボタンを設定していろいろ実行してみてください。

【参考】ボタンの設定方法

みなさん、こんにちはケンケンです。 今回は、ファイルやフォルダを操作して、ファイル名一覧を作成したりファイルに記述されているデータを取得してシートに転記する方法をご紹介します。   実務で無数のファイルと格闘して[…]

 

行の幅を設定するのにわざわざコードを書くことはまれだと思いますが、複雑なシステムの一部として使うことはよくあることなので

覚えておいて損はないでしょう。

ユーザーフォームで作れるとシステムっぽくてなお良いかもですね。

【参考】ユーザーフォームの基礎

みなさん、こんにちはケンケンです。   今回は、ユーザーフォームの作り方をご紹介します。   実務でよく耳にするのは「管理データを作っているけど、横に長い表にたくさんの項目を入力するのが面倒!」といった声です。 […]