HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > 【Excel VBA】セルの内容に合わせて列幅/高さを自動調整する(AutoFitメソッド)

【Excel VBA】セルの内容に合わせて列幅/高さを自動調整する(AutoFitメソッド)|Excel VBA

セル操作関連のテクニック

【Excel VBA】セルの内容に合わせて列幅/高さを自動調整する(AutoFitメソッド)

Excelで表を作成しているとき、「文字が途中で見切れてしまう」「列幅の調整に時間がかかる」と感じたことはありませんか?
こうした列幅調整の手間は、Excel VBAのAutoFitメソッドで簡単に解決できます。
AutoFitメソッドを使えば、セルに入力されている文字列の長さに合わせて列幅や行の高さを自動で最適化して、表を瞬時に整えることが可能です。たった数行のVBAコードを書くことで、表の可読性を大幅に向上させ、作業時間を大きく短縮できます。Excel作業を効率化したい人にとって、ぜひ覚えておきたいテクニックの一つです。

AutoFitメソッドの基本構文

AutoFitメソッドの構文は次のとおりです。

範囲.AutoFit

AutoFitメソッドの使い方

特定の列や行のみを自動調整する

指定した列や行に対して、その中で最も長いデータ(列の場合)や、最も高いセル(行の場合)に合わせて、幅や高さを自動的に調整できます。

例1:A列の幅を自動調整します。

Sub AutoFit1()
	Columns("A").AutoFit
End Sub

例2:1行目の高さを自動調整します。

Sub AutoFit2()
	Rows("1").AutoFit
End Sub

複数の列や行をまとめて自動調整する

複数の列または行をまとめて指定した場合でも、それぞれの列は最も長いデータに、またそれぞれの行は最も高いセルに合わせて自動的に調整されます。ただし、AutoFitを適用できるのは、列(Columns)または行(Rows)を表すオブジェクトに対してのみである点に注意してください。

例3:A列〜E列の幅を自動調整します。

Sub AutoFit3()
	Columns("A:E").AutoFit
End Sub

行の高さも同じように複数行の自動調整ができます。
例4:2行目〜10行目の高さを自動調整します。

Sub AutoFit4()
	Rows("2:10").AutoFit
End Sub

列名を数字に置き換えることもできます。以下の例は、1列目〜5列目(A列〜E列)の幅をまとめて自動調整します。
例5:1列目〜5列目の幅を自動調整します。

Sub AutoFit5()
	Columns("1:5").AutoFit
End Sub

シートの全列を自動調整する

シート内のすべての列の幅を一括で自動調整することもできます。表の見た目を整えたいときや、レポート出力後の仕上げ処理として活用できるので便利です。ただし、シート全体を対象とするため、データ量が多い場合は処理速度が遅くなる点に注意してください。

例6:すべての列の幅を自動調整します。

Sub AutoFit6()
	Columns.AutoFit
End Sub

特定の範囲を基準にして列全体の幅を調整する

列の中で特定の範囲のみを基準にして、列幅を自動調整することもできます。

例7:A2〜A5セルを基準にしてA列全体の幅を自動調整します。

Sub AutoFit7()
	Range("A2:A5").Columns.AutoFit	
End Sub

この場合、基準になるのは「A2〜A5の範囲内で最も長いセル」です。A列で一番長い文字列が入力されているA1セルは、範囲に含まれていないため自動調整の対象になりません。そのため、A2〜A5の中で最も長い文字列が入力されているA4セルの幅に合わせて、A列全体の幅が自動的に調整されます。

<実行前>

<実行後>

EntireColumnプロパティとは

A列〜E列を自動調整する操作をマクロの記録機能で実行すると、次のようなコードが生成されます。

Columns("A:E").EntireColumn.AutoFit

EntireColumnプロパティは、指定したセル(または範囲)が属している「列全体」を表すRangeオブジェクトを返すプロパティです。たとえば、特定のセル範囲を基準にして、その列全体を操作したい場合に使用します。ただし、上記のコードでは Columns("A:E") の時点ですでに列A〜E全体を表しているので、EntireColumnを付けなくても同じ結果になります。そのため、可読性の観点から、次のようにシンプルに記述するほうが分かりやすいでしょう。

Columns("A:E").AutoFit

【参考】列の幅や行の高さが自動調整されないときは

列の幅や行の高さがAutoFitで正しく自動調整されないときは、以下のポイントを確認してみましょう。よくある原因を紹介します。

  • 「折り返して全体を表示する」を設定したセルがないか
  • 結合セルが含まれていないか
  • 非表示になっている行や列がないか
  • フィルターによって非表示になっているセルがないか
  • セル内改行が含まれていないか

動画でさらに理解&身につく!要チェック

本記事関連の解説は6分14秒頃からです

「Excel VBA」の即効テクニック人気記事