Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » Excel VBAで列幅を変更する-Range.ColumnWidth

Excel VBAで列幅を変更する-Range.ColumnWidth

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

このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vba 列番号 幅 変更」
という検索キーワードに気づきました。

Excel VBAで列番号を指定して列幅を変更するにはどのようなコードを書けばいいのか探していらしたのでしょうか。

[スポンサードリンク]

Range.Widthプロパティで列幅を設定できない

以下のようなSubプロシージャで、1列目の列幅を変更できると考えたのかもしれません。

Sub samp()
 Columns(1).Width = 20
End Sub

上記のプロシージャを実行すると、
「RangeクラスのWidthプロパティを設定できません。」
という実行時エラーが発生してしまいます。

Widthという名前ですから、「Columns(1).Width = 20」といったコードで列幅を変更できそうなのに、ダメだということは、列を取得する「Columns(1)」の部分に問題があると考え、「vba 列番号 幅 変更」と検索なさったのでしょうか。

Range.Widthプロパティで実行時エラーが発生する理由

列を列番号で指定する「Columns(1)」の部分には問題はありません。
問題は「.Width」です。

オブジェクトブラウザーでRangeオブジェクトのWidthプロパティを確認すると、下図のとおり「読み取り専用」となっています。

VBAで列幅を変更する

プロパティには、取得も設定もできるプロパティと、取得しかできないプロパティがあります。

Range.Widthは取得しかできない、読み取り専用のプロパティであるにも関わらず、

Columns(1).Width = 20

と設定しようとしたために
「RangeクラスのWidthプロパティを設定できません。」
という実行時エラーが発生したのです。

列幅を変更するサンプルマクロ

で、以下のようなプロシージャにすれば、列幅を変更できます。

Sub 列幅を変更する()
 Columns(1).ColumnWidth = 20
End Sub

列幅を変更するには、RangeオブジェクトのColumnWidhtプロパティを利用するということです。

VBAで列幅を変更する

最終更新日時:2023-06-07 14:46

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » Excel VBAで列幅を変更する-Range.ColumnWidth

「行・列を表すRange」の記事一覧

検索


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

.