列の幅を変更・自動調整・取得する方法
今回の目標
この記事では、列の幅を特定の数値に変更したり、テキストの長さに合わせた幅に変更する方法を解説します。
このプロパティは Double 型で、整数だけでなく小数も指定できます(例:12.5 など)。
目標リスト
- 列の幅を特定の長さへ変更する
- 列の幅を取得する
- 列の幅を文字列の長さに合わせて変更する
ColumnWidth / AutoFit について
ColumnWidth プロパティとは
ColumnWidth プロパティは、列の幅を変更または取得します。
このプロパティは Double 型で、数値の単位はポイント(pt)です。
ColumnWidth プロパティの構文
A列の幅を 15 に変更する処理です。
Columns("A").ColumnWidth = 15
A列の幅を取得する処理です。
取得結果はイミディエイトウィンドウに表示します。
Debug.Print Columns("A").ColumnWidth
AutoFit メソッドとは
AutoFit メソッドは、その列の中にある一番長いテキストの長さに合わせて、列の幅を変更できるメソッドです。
AutoFit メソッドの構文
A列の幅を文字列の長さに合わせて、列の幅を変更する処理です。
Columns("A").AutoFit
列の幅を変更する
ColumnWidth に数値を設定することで、列の幅を変更します。
サンプルコード
Sub ChangeColumnWidth1()
'A列の幅を 15 に変更する
Columns("A").ColumnWidth = 15
End Sub
(下の画像のように、A列の幅が 15 に変更します)
列の幅を取得する
ColumnWidth を使い、列の幅を取得します。
サンプルコード
Sub ChangeColumnWidth2()
'A列の幅を 15 に変更する
Columns("A").ColumnWidth = 15
'A列の幅をイミディエイトウィンドウに表示する
Debug.Print Columns("A").ColumnWidth
End Sub
(A列の幅が 15 になり、イミディエイトウィンドウに 15 と表示します)
複数の列の幅を変更する
Columns に複数の列を指定して、ColumnWidth を設定すると、まとめて変更できます。
サンプルコード
Sub ChangeColumnWidth3()
'A列とB列の幅を 20 に変更する
Columns("A:B").ColumnWidth = 20
End Sub
(下の画像のように、A列とB列の幅を 20 に変更します)
セルが含まれる列の幅を変更する
Range オブジェクトの EntireColumn プロパティを経由してから、
ColumnWidth プロパティに代入することで、参照元のセルが含まれる列の幅を変更できます。
指定したセルが属する列全体の幅を変更できます。
例えば、Cells(1, 2) は、セルB1を指すため、B列全体の幅を変更します。
サンプルコード
Sub ChangeColumnWidth4()
'セルB1 の列(=B列)の幅を変更する
Cells(1, 2).EntireColumn.ColumnWidth = 25
End Sub
(下の画像のように、セルB1 の列(=B列)の幅を変更します)
全ての列の幅を変更する
Columnsの引数を指定せずに、ColumnWidth プロパティを続けることで、全ての列の幅を変更できます。
この方法ではシート全体の列幅が変更されるため、特定の列だけを変更したい場合は範囲を指定してください。
サンプルコード
Sub ChangeColumnWidth5()
'全ての列の幅を 12.5 に変更する
Columns.ColumnWidth = 12.5
End Sub
(下の画像のように、全ての列の幅を 12.5 に変更します)
文字列の長さに合わせて列幅を自動調整する
AutoFit メソッドを使用することで、文字列の長さに合わせて列幅を自動調整することができます。 複数の列を自動調整すると、各列ごとに内容に応じた幅に設定されます。
サンプルコード
Sub ChangeColumnWidth6()
'全ての列の幅を 2.5 に変更する
Columns.ColumnWidth = 2.5
'セルA1、A2、B1にテキストを入力する
Range("A1") = "Sample"
Range("A2") = "地道に学ぶExcelVBA"
Range("B1") = "SampleText"
'A列とB列で、一番長いテキストの長さに列幅を自動調整する
Columns("A:B").AutoFit
End Sub
(下の画像のように、A列とB列でテキストの長さに列幅を自動調整します)
