このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「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プロパティを確認すると、下図のとおり「読み取り専用」となっています。
プロパティには、取得も設定もできるプロパティと、取得しかできないプロパティがあります。
Range.Widthは取得しかできない、読み取り専用のプロパティであるにも関わらず、
Columns(1).Width = 20
と設定しようとしたために
「RangeクラスのWidthプロパティを設定できません。」
という実行時エラーが発生したのです。
列幅を変更するサンプルマクロ
で、以下のようなプロシージャにすれば、列幅を変更できます。
Columns(1).ColumnWidth = 20
End Sub
列幅を変更するには、RangeオブジェクトのColumnWidhtプロパティを利用するということです。
最終更新日時:2023-06-07 14:46
- Newer:VBAで最後から2番目のシート名を取得する
- Older:VBAで列番号を取得する
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » Excel VBAで列幅を変更する-Range.ColumnWidth