セルの内容に合わせて列幅/高さを自動調整する(AutoFitメソッド)|Excel VBA |
Excelには、列見出しや行見出しの境界部分をダブルクリックすると、セルの内容にあわせて列幅や行の高さを自動調整する機能があります。
VBAで自動調整をするには、AutoFitメソッドを使用します。
複数の列や行を指定した場合でも、それぞれの列や行おいて、最も長いデータや、最も高い行に合わせて自動調整します。
ただし、指定するオブジェクトは、列や行を表すものでなければなりません。
次のコードは列A〜Eを自動調整しますが、(2)の記述はエラーになります。
Sub Sample1()
Columns("A:E").AutoFit '---(1)OK
' Range("A:E").AutoFit '---(2)エラー
' Range("A:E").EntireColumn.AutoFit '---(3)OK
End Sub
列A〜Eを自動調整する操作をマクロ記録すると次のようなコードが得られます。
Columns("A:E").EntireColumn.AutoFit
記録されたEntireColumnプロパティは、指定したセルを含む列全体を返すプロパティです。
Columns("A:E")はすでに列A〜E全体を表しているので、この場合は (1)のようにEntireColumnプロパティを省略できます。
列のうち特定のセルに列幅を自動調整することもできます。
たとえば、列Aにある他のセルは無視して、セルA3に最適な幅に列A全体を揃える場合は、Sample2の(1)ように記述します。
一方、(2)のコードは、セルA3を含む列の中の最も長いデータに自動調整します。
両者のコードはよく似ていますが、動作が異なるので留意してください。
Sub Sample2()
Range("A3").Columns.AutoFit '---(1)セルA3を自動調整したセル幅に揃える
Range("A3").EntireColumn.AutoFit '---(2)A列の一番長いセルのセル幅に自動調整
End Sub