サイトについて      連絡先   検索

VBA 列の幅を調整する

はじめに

Excel VBA マクロの列の幅を調整する方法を紹介します。

Columns.ColumnWidth プロパティまたは Range.ColumnWidth プロパティから列の幅を調整できます。

Columns.AutoFit メソッドで列の幅を自動調整できます。

  • 目次
    • 列の幅を取得する
    • 列の幅を設定する
    • 複数列の幅を取得する
    • 複数列の幅を設定する
    • 列の幅を自動設定する
    • 指定したシートの列を幅する

列の幅を取得する

Columns の引数に列番号または列名を指定すると、その列の幅を取得できます。

列「B」の幅を取得するにはColumns(2).ColumnWidthまたはColumns("B").ColumnWidthを入力します。


Dim d As Double
d = Columns(2).ColumnWidth
d = Columns("B").Width
Debug.Print(d)

Range の引数にセル名を指定すると、そのセルを取得できます。EntireColumn からその列を取得できます。

セル「A1」の列を幅するにはRange("A1").EntireColumn.ColumnWidthを入力します。


Dim d As Double
d = Range("A1").EntireColumn.ColumnWidth
d = Range("A1").EntireColumn.Width
Debug.Print(d)

ColumnWidth は標準フォントの 1 文字の単位で取得します。これは Excel で幅を設定するのと同じ単位です。Width はポイントの単位で取得します。

列の幅を設定する

列「B」に幅を設定するにはColumns(2).ColumnWidth = 20のように入力します。


Columns(2).ColumnWidth = 20
Columns("B").ColumnWidth = 20
1

セル「A1」の列に幅を設定するにはRange("A1").EntireColumn.ColumnWidth = 20のように入力します。


Range("A1").EntireColumn.ColumnWidth = 20

Width は読み取り専用なので設定できません。

複数列の幅を取得する

列の範囲「B ~ C」の幅を取得するにはRange("B:C").ColumnWidthまたはRange(Columns(2), Columns(3)).ColumnWidthを入力します。

範囲のすべての列の幅が同じときに 1 列の幅を取得します。違う幅が含まれているときは Null になります。


Dim d As Double
d = Range("B:C").ColumnWidth                  ' B ~ C 列の幅を取得
d = Range(Columns(2), Columns(3)).ColumnWidth ' B ~ C 列の幅を取得
d = Range("D:D").ColumnWidth                  ' D 列の幅を取得
Debug.Print(d)

Width を使用すると範囲の幅の合計を取得します。


Dim d As Double
d = Range("B:C").Width '  B ~ C 列の幅の合計を取得
Debug.Print(d)

複数列の幅を設定する

列の範囲「B ~ C」に幅を設定するにはRange("B:C").ColumnWidth = 20のように入力します。

各列の幅が指定した幅になります。


Range("B:C").ColumnWidth = 20
Range(Columns(2), Columns(3)).ColumnWidth = 20
2

列の幅を自動設定する

列の幅をセルの内容に合わせて自動調整するには Columns.AutoFit メソッドを使用します。

列「B」の幅を自動設定するにはColumns(2).AutoFitを入力します。


Columns(2).AutoFit             ' B 列の幅を自動調整
Range("B:C").Columns.AutoFit   ' B ~ C 列の幅を自動調整
Range("B1:C3").Columns.AutoFit ' B ~ C 列の幅をセル「B1 ~ C3」に合わせて自動調整
3

Range でセルの範囲を指定したときは、その範囲の内容に合わせて自動調整します。

指定したシートの列を幅する

シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。

Sheet1 を指定するにはWorksheets("Sheet1")またはWorksheets(1)を入力します。

sheet1

' Sheet1 の列の幅を設定
Worksheets("Sheet1").Columns(1).ColumnWidth = 20
Worksheets(1).Columns(1).ColumnWidth = 20

' Sheet2 の列の幅を設定
Worksheets("Sheet2").Columns(1).ColumnWidth = 20
Worksheets(2).Columns(1).ColumnWidth = 20

Sheet1 に Columns を入力すると、自身のシートの列になります。自身を表すMe.が省略されています。


' どちらも同じコード
Dim r As Range
Set r = Columns(1)
Set r = Me.Columns(1)

標準モジュールに Columns を入力すると、アクティブなシートの列になります。アクティブシートを表すActiveSheet.が省略されています。


' どちらも同じコード
Dim r As Range
Set r = Columns(1)
Set r = ActiveSheet.Columns(1)
  • 目次
    • 列の幅を取得する
    • 列の幅を設定する
    • 複数列の幅を取得する
    • 複数列の幅を設定する
    • 列の幅を自動設定する
    • 指定したシートの列を幅する