ColumnWidthプロパティ

列の幅の取得や設定にはColumnWidthプロパティを利用します。

列の幅の取得を複数列をまとめて取得する場合、各列の幅が全て同じであれば正しく取得できますが、列ごとに幅が異なる場合はNullが返却されます。その場合は1列ごとに取得する必要があります。

列の幅の設定は1度にまとめて複数の列に対して同じ幅を設定することが可能です。

構文

Rangeオブジェクトにはセル範囲を設定します。Range(“A:B”)のように列全体を選択することも出来ますが、Range(“A1”)のようにセルを指定してもA列に対して列の幅の取得や設定を行うことが可能です。

取得および設定する際の値の単位は標準フォントの1文字分の幅が1になります。プロポーショナルフォントの場合は半角数字の0の幅を1とします。

基本的な設定と取得のサンプルコード

複数列の幅を1度に取得しようとしても、各列の幅を正しく取得できません。

5行目から10行目は同じ幅の複数列を取得し、それ以降は異なる幅の列を複数列取得しています。

前者は同じ幅のためColumnWidthプロパティで取得できますが、後者は正しく取得できず基本的にはNullが返ります。例外として、未保存のBook1などのブックの場合でFomulaArrayプロパティやTextプロパティが””になっている場合はNullではなく選択範囲の一番左の列の高さが返ります。

実行結果
5
Null

複数列の取得のサンプルコード

複数列の幅を取得する場合は各列の幅が同じとは限らないため、1列ずつ取得および設定することになります。

以下は1列目から5列目の幅を列ごとに取得および設定をするサンプルコードです。

注意点として、列全体を表すにはColumnsプロパティを利用する必要があります。

もしループ処理で、For Each r in Selection などと書くと、1列目から5列目の全セルをループすることになり、A1、B1、C1、D1、E1、A2、、、、A1048576、B1048576、C1048576、D1048576、E1048576と時間が掛かることになるため注意しましょう。Columnsプロパティを使えばループ回数は列数と同じで済みます。