📊 Excel VBA Top100
🎨

AutoFitColumns

書式設定

アクティブシートのすべての列幅を内容に合わせて自動調整します

シート上のすべての列、または選択した列の幅を、セル内のコンテンツに合わせて自動的に最適な幅に調整するマクロです。手動で列幅をドラッグ調整する手間を省き、全列を一括で見やすい幅に整えます。長い文字列が「#####」と表示されてしまう問題や、逆に余白が広すぎてスペースを無駄にしている問題を一瞬で解消できます。印刷前の整形や、他者からもらったファイルの整理に非常に便利です。内部ではColumns.AutoFitメソッドを選択範囲全体に対して実行しており、各列のセル内容の最大幅を基準に自動計算しています。CSVインポートやシステム出力データのように列幅が初期値のまま崩れているシートに特に効果的です。AutoFitRowsと合わせて実行すれば、列と行の両方を一度に最適化でき、手作業での微調整がほぼ不要になります。

AutoFitColumns デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: AutoFitColumns を実行すると、シート内の全列が自動調整されます

🎯 活用シーン

  • ✓CSVインポートや他システムからのデータコピー後に列幅がバラバラになった表を、ワンクリックで見やすく整形したいとき
  • ✓印刷前に列幅を調整してコンテンツが切れずに印刷されるよう整えたいとき
  • ✓他者から受け取ったExcelファイルの表示が崩れている場合に、すべての列を内容に合わせて一括整形したいとき
  • ✓他社から届いたExcelファイルの列幅が統一されておらず読みづらい場合に、開いてすぐ整形したいとき
  • ✓定期的にエクスポートされるシステムレポートの列幅調整作業をマクロ化し、毎回の手作業をなくしたいとき

💡 実装のヒント

  • ▸非常に長いテキストが含まれるセルがある場合、その列だけ極端に幅が広くなることがあります。最大列幅を設定したい場合はマクロのコードに上限値を追加してください。
  • ▸結合セルがある列は自動調整が正しく機能しないことがあります。結合セルを解除してから実行することをお勧めします。
  • ▸非表示の列は自動調整の対象外となります。非表示列の幅も調整したい場合は事前に再表示してから実行してください。
  • ▸特定の列だけ幅を固定したい場合は、AutoFit実行後にSetColumnWidthで該当列のみ上書き指定してください。
  • ▸画像やグラフが配置されているシートでは、列幅変更によりオブジェクトの位置がずれる場合があるため事前に確認してください。

💻 VBAコード

' AutoFitColumns
' -----------------
' Macro Name: AutoFitColumns
' Description: アクティブシートのすべての列幅を内容に合わせて自動調整します
' Parameters: なし
' Returns: なし
' Usage: AutoFitColumns を実行すると、シート内の全列が自動調整されます
' -----------------

Sub AutoFitColumns()
    On Error GoTo ErrorHandler

    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Cells.EntireColumn.AutoFit

    MsgBox "列幅を自動調整しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub