列の幅を変更・自動調整・取得する方法

今回の目標

この記事では、列の幅を特定の数値に変更したり、テキストの長さに合わせた幅に変更する方法を解説します。
このプロパティは 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列でテキストの長さに列幅を自動調整します)
プログラム実行後の画像

関連リンク

ページの先頭へ