Home » エクセルマクロ・Excel VBAの使い方 » 行・列を表すRange » VBAで列幅を変更する

対象: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で列幅を変更する

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 行・列を表すRange » VBAで列幅を変更する

TrackBack:0

TrackBack URL
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 行・列を表すRange » VBAで列幅を変更する

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

検索

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

.