VBAを使って列幅を自動調整する方法【AutoFitの使い方と注意事項を紹介】

Left Caption

豆父ちゃん

セルに入力したテキストが見切れてしまう。自動で調整する方法ってないの?

こんな疑問にお答えします。

結論から言うと、AutoFitメソッドを使う!です。

この記事では、AutoFitの使い方と注意点を紹介していきます。列幅の調整を手動で行っている方におすすめの内容になっているで、気になる方は是非チェックしてみてください。



広告

列幅を自動調整するAutoFitの使い方

列を表すColumnsとAutoFitを組み合わせることで列幅を入力されたテキストの幅に自動調整することができます。3つのサンプルを使ってどのような処理が実行されるか紹介していきます。

サンプルとして、下記のように適当なテキストが入力されたエクセルファイルを利用します。

 

A列の列幅を自動調整するサンプルVBA

1 Sub Sample1()
2 Columns(“A").AutoFit
3 End Sub

 

1 Sub Sample1()
2 Cells(1, 1).EntireColumn.AutoFit
3 End Sub

 

1 Sub Sample1()
2 Range(“A:A").EntireColumn.AutoFit
3 End Sub

 

結果

 

A列からD列の列幅を自動調整するサンプルVBA

1 Sub Sample2()
2 Columns(“A:D").AutoFit
3 End Sub

 

1 Sub Sample2()
2 Range(Cells(1,1),Cells(1,4)).EntireColumn.AutoFit
3 End Sub

 

1 Sub Sample2()
2 Range(“A:D").EntireColumn.AutoFit
3 End Sub

 

結果

 

B8セルに入力されたテキストに合わせて列幅を自動調整するサンプルVBA

1 Sub Sample3()
2 Cells(8,2).Columns.AutoFit
3 End Sub

 

1 Sub Sample3()
2 Range(“B8").Columns.AutoFit
3 End Sub

 

結果

 

列幅を自動調整するには、特定のセルを対象にするのか、それとも列全体を対象とするのか、でVBAの記載方法が変わってきます。

列の中で入力されたテキストが一番長いセルを対象とする場合、EntireColumnを使います。これに対して、指定する特定のセルを対象とする場合、Columnsを使います。最後にsがあるか、ないかでVBAがエラーで実行できなくなるので十分注意してください。

上記3つのサンプルを比較してみると、AutoFitの使い方がわかるかと思います。自分の仕事に合った方法を採用してください。

 

AutoFitを使えば作業効率が格段にアップする

エクセルで文章を書くにあたって一番の問題が、入力した文字が見切れてしまうこと!ではないでしょうか。

私の上司には、

「エクセルは文章を書くには不向き。文章を書くならWordを使うこと。」

と言う方がいます。

確かにその通りなのですが、文章がメインの資料の中に計算が必要な一覧表統計を表すデータが必要になることがあります。この場合、エクセルで資料を作るべきだと思います。

契約書や請求書といった資料でも、日付や相手の氏名の欄に数式を入れて自動で反映させる工夫をしている方がほとんどです。AutoFitのような列幅を自動調整するツールを使いこなせば、入力したテキストが見切れることなく文章を書くことができるので、エクセルでもキレイに文章が多い資料を記作成することができます。

 

VBAを使わないで列幅を調整する方法

VBAを使わずにマウスの操作だけで、AutoFitと同じ処理を実行することができます。

マウスの操作だけで列幅を自動調整する方法

調整する列をクリック

 

指定した列の右端をダブルクリック

たったこれだけで、列幅が自動調整されて見切れていたテキストが表示されます。

 

マウスを使って列幅をまとめで自動調整する方法

調整したい列をまとめて選択

 

まとめて選択した列の右端をダブルクリック

ダブルクリックする列は選択中の列であればどこをダブルクリックしても実行されます。

VBAを使わずにマウスの操作だけで列幅を調整する方法は、実際の仕事でとても役立ちます。是非使い方をマスターしましょう。

 

AutoFitを使うときの注意点

エクセルでの文章作成にとても便利なAutoFitですが、注意点があります。

注意点① 結合されたセルに入力されたテキストにはAutoFitは使えない

結合されたセルに入力されたテキストにはAutoFitは使えません。

上図のようにAutoFitを設定したVBAを実行しても列幅が調整されませんでした。また、列を選択して右端をダブルクリックする方法も試してみましたが、列幅は変更されませんでした。

これから資料を作成する方には、なるべくセルの結合は使わない!ことをおすすめします。

 

注意点② 印刷範囲が決められた資料でAutoFitを使うと、印刷範囲がずれてしまう

仕事では、印刷範囲が決められたエクセルファイルの編集作業がありますよね。この場合、安易にAutoFitを使って列幅を変えてしまうと印刷範囲がズレてしまい印刷出来なくなる!という事態に陥ってしまいます。

私の職場では、請求書や領収書をエクセルで作成しています。

入力するテキストが長すぎて列幅を調整。印刷範囲がズレてしまいやり直し!

ということが頻繁に起こっています。

印刷範囲が決められた様式では、列幅の変更はなるべく避けるようにしましょう。

 

列幅の調整をしない様式に設定することが重要

上記で紹介した、AutoFitを使うと印刷範囲がズレてしまう!という問題の対策として、列幅の調整が必要のない様式設定を行うことが大切です。

設定のやり方はとても簡単で、

エクセルを開いて一番初めに列幅を縮める!ことです。

たったこれだけで使いやすい様式を作ることができます。

 

私はいつも列幅を「2」に設定して、セルの形を正方形に近づけています。セルを細かくすることで、いろんな様式に対応した資料作りが可能になります。

 

 

会社で決められたエクセルファイルの様式を変更することは難しいと思いますが、これから様式を作り上げる!という方は是非試して頂きたいと思います。

列幅を狭くしセルを細かくすることで、項目の追加がとてもしやすくなります。上記で紹介している工事契約書の消費税の金額をR列に記載しているのですが、右や左に寄せることが可能です。もし列幅を狭くしていなければ、左右方向の微調整はとても難しくなります。

私の職場では左右方向の微調整をスペースを使って表現しているエクセルファイルがありますが、とても編集しずらくキレイな資料にするのが難しい状況です。スペースを使っているセルには数式が設定できないので、デメリットしかありません。

スペースを使ってテキストの位置関係を調整しているエクセルファイルは様式を見直す必要があります。

 

列幅・行間を原図の様式にリセットするVBA

様式が決められたエクセルファイルを編集するには、AutoFitで列幅を調整するのではなく、原図(決められた様式)から列幅の情報を取得しリセットする!というVBAがおすすめです。

 

原図の様式にリセットするVBAを使えば、AutoFitや手動で列幅をグチャグチャにしてしまった後でも一瞬で原図の通り元に戻すことができます。

さらにこのVBAの最大の特徴として、入力したテキストを消去せず、そのままの状態で列幅を元に戻せる!ということです。

入力作業を終えた後に様式の調整を行おうとすると、入力したテキストを消さなければいけない場面があります。しかし、列幅を原図に戻すVBAさえあれば、テキスト入力のやり直し作業がなくなるのでとても便利です。

動画で紹介している、列幅・行間を原図の様式に戻すVBAは下記のサイトでダウンロードすることができます。様式を決められたエクセルファイルを編集している方は是非使ってみて下さい。

 

ダウンロードではなく、原図の様式に戻すVBAを自分で作り上げたい!という方は下記のサンプルVBAを参考にしてください。シート名を取得するVBAを編集しなければいけませんが、それ以外はコピーしてお使いいただけます。

 

列幅を原図に戻すサンプルVBA

1 Sub 原図Sheetから列幅を取得し自動調整するVBA()
2 Dim Ash As Worksheet
3 Set Ash = ThisWorkbook.Worksheets(“原図")
4 For i = 1 To 50
5 retu = Ash.Cells(1, i).ColumnWidth
6 ActiveSheet.Cells(1, i).ColumnWidth = retu
7 gyo = Ash.Cells(i, 1).RowHeight
8 ActiveSheet.Cells(i, 1).RowHeight = gyo
9 Next
10 End Sub

 

2行目と3行目は、列幅の情報を取得するシートを宣言しています。今回は、シート名「原図」というシートから情報をもらう!というVBAになっています。「原図」という部分を列幅を取得したいシートの名前に変更するとすぐにお使いいただけるはずです。

シート名を取得する方法について下記の記事で詳しく紹介しています。

 

上記のサンプルVBAは列幅の他にも、行間の情報も取得するVBAが設定されています。コピーしてすぐにお使いいただけるので気になる方は試してみて下さい。

下記の記事では、列幅・行間を原図の様式にリセットするVBAについて詳しく紹介しています。記事には、「原図Sheetから列幅・行間の情報を取得するVBA」と「原図エクセルファイルから列幅・行間の情報を取得するVBA」の2種類のVBAを紹介しています。コピーしてすぐに使えるサンプルVBAも紹介されているので是非チェックしてみてください。

 

列幅や行間の調整はエクセルでキレイな資料を作成する作業には欠かせない処理です。入力されたテキストの長さに自動で調整するAutoFitや原図の様式に戻すVBAなど、いろんな方法があります。自分に合った調整方法を模索してみてください。