【VBA】autofitで列幅を自動調整~初心者でも簡単に使える方法~
セルに入力したテキストが見切れてしまう。自動的に調整する方法ってないの?
こんな問題は
VBAのautofitメソッドを使って解決
することができます。
- 列幅が短くて見切れているテキストがある
- 列幅を適当に調整したのにまだ見切れているテキストがあった
- 1列づつ調整してたらめちゃくちゃ時間かかった
こんな問題はVBAで一瞬で解決!!
ボタン1クリックでブック内全ての列幅を調整することだってできます。
列幅を自動調整するVBAを設定してテキストの見切れがないキレイな書類を効率的に作成したい!
という方は是非本記事で紹介するautofitの使い方を是非参考にしてみてください。
目次
VBA autofitとは?基本の使い方を解説!
VBAのautofitは、Excelで自動的にセルの幅を調整する便利な機能です。
この機能を使えば、
テキストの長さに応じて列幅が自動的に調整されデータが見やすく整った状態
になります。
さらに、
手作業で列幅を調整する手間が省けるだけでなく、大量のデータをまとめて調整ができるため、
作業効率を大幅に向上させることが可能。
autofitを使うことで、スッキリと整ったレイアウトを簡単に実現できます。
VBA autofitの基本操作手順
VBAでautofitを使うのはとても簡単です。
基本的な操作手順がこちら
ExcelのVBAエディタを開く
↓
対象のセル範囲を指定
↓
Columns(“A:A").AutoFitというコードを入力
このコードでは、
A列の幅を内容に合わせて自動調整する
という意味です。
なので、"A:A"の部分を変更することで指定する範囲を変更することができます。
他にも
Cells(1, 1).EntireColumn.AutoFit
と入力すればA列の列幅が自動調整されます。
範囲の指定方法でCellsを使うのか、Rangeを使うのか、は状況に応じて使い分けましょう。
まずは、
手を動かして実際にコードを書いてみる
ことが何よりも大切です。
列幅自動調整のメリットとは?
列幅の自動調整には多くのメリットがあります。
まず第一に、時間の節約です。
手動で列幅を一つ一つ調整する必要がなくなり、全体の作業効率が大幅にアップします。
たとえば、
大量のデータを取り扱う場合でもワンクリックで全ての列幅を最適化できるため、
視覚的にも整理されたデータ表を簡単に作成できます。
文字列が途中で切れることがなくなり、
全てのデータを一目で確認
することが可能。
このように、autofitを活用することで、効率的で見栄えの良いExcelシートを作成することが可能になります。
実際に使ってみよう!VBA autofitの具体的なコード例
どんな状況でも列幅を自動調整するマクロを導入できるよう「AutoFit」の使い方をいくつかのサンプル事例を使ってご紹介していきます。
1列目(A列)の列幅を自動調整するコード
1列目(A列)に入力されているテキスト長に合わせて列幅を自動調整するマクロの書き方は一つではありません。
A列と指定するか、1列目と指定するか、でコードの書き方が変わります。
どちらのコードでも結果は同じなのですが、状況に応じて最適なコードを書いていく必要があります。
「AutoFit」を自由い扱えるようになって頂くために3種類のサンプルをご紹介します。
A列を指定して列幅を自動調整するコード①
A列に入力されているテキスト長に合わせて列幅を自動調整するマクロがこちら
Sub Sample1()
Columns("A").AutoFit
End Sub
A列を指定して列幅を自動調整するコード②
A列に入力されているテキスト長に合わせて列幅を自動調整するマクロがこちら
Sub Sample2
Range("A:A").EntireColumn.AutoFit
End Sub
1列目を指定して列幅を自動調整するコード③
1列目に入力されているテキスト長に合わせて列幅を自動調整するマクロがこちら
Sub Sample3()
Cells(1, 1).EntireColumn.AutoFit
End Sun
3つとも「1列目(A列)に入力されているテキスト長に合わせて列幅を自動調整する」という同じ処理結果になります。
処理結果がこちら
A列からD列の列幅を自動調整するコード
サンプルとしてA列からD列の列幅を自動調整するマクロのコードをご紹介していきます。
複数の列幅を調整するマクロも先ほど同様コードの書き方は1つではありません。
いろんな状況に対応できるよういくつかのサンプルをご紹介していきます。
A列からD列を指定して列幅を自動調整するコード①
A列からD列それぞれに入力されているテキスト長に合わせて列幅を自動調整するマクロがこちら
Sub Sample1()
Columns("A:D").AutoFit
End Sub
A列からD列を指定して列幅を自動調整するコード②
A列からD列それぞれに入力されているテキスト長に合わせて列幅を自動調整するマクロがこちら
Sub Sample2
Range("A:D").EntireColumn.AutoFit
End Sub
1列目から4列目を指定して列幅を自動調整するコード③
1列目から4列目それぞれに入力されているテキスト長に合わせて列幅を自動調整するマクロがこちら
Sub Sample3()
Range(Cells(1,1),Cells(1,4)).EntireColumn.AutoFit
End Sun
3つとも「1列目(A列)から4列目(D列)に入力されているテキスト長に合わせて列幅を自動調整する」という同じ処理結果になります。
処理結果
仕事をしていて1列目(A列)だけ列幅を調整できればいい!といった状況はほとんどないかと思います。
- 編集範囲の列幅を自動調整したい
- 印刷範囲内の列幅を自動調整したい
- 一覧表で特定の列幅を自動調整したい
このような状況では複数の列を指定して列幅を自動調整するマクロの導入が便利です。
セル番地を指定して列幅を自動調整するコード
ピンポイントでセル番地を指定して列幅を調整するマクロのコードを紹介していきます。
特記事項を入力セルが決まっている!集計値を表示させるセルが決まっている!
このような処理をするエクセル業務に効果的です。
B8セルを指定して列幅を自動調整するコード①
B8セルに入力されているテキスト長に合わせて列幅を自動調整するマクロがこちら
Sub Sample1()
Cells(8,2).Columns.AutoFit
End Sub
B8セルを指定して列幅を自動調整するコード②
B8セルに入力されているテキスト長に合わせて列幅を自動調整するマクロがこちら
Sub Sample2()
Range("B8").Columns.AutoFit
End Sub
処理結果
列幅を自動調整するには、特定のセルを対象にするのか、それとも列全体を対象とするのか、でVBAの入力方法が変わってきます。
列の中で入力されたテキストが一番長いセルを対象とする場合、EntireColumnを使用、
これに対して指定する特定のセルを対象とする場合、Columnsを使います。
最後に「s」があるか、ないかでVBAがエラーで実行できなくなるので十分注意してください。
autofitで列幅を調整する際の注意点
autofitを使う際には、いくつかの注意点があります。
それは、
「結合されたセルにAutoFitは使えない」「印刷範囲が大きくズレる可能性がある」
という点です。
どういうことか詳しく解説していきます。
例えば、列幅が極端に広がる可能性があるという点です。
また、
そのため、autofitを使用する際には、データの内容やレイアウトを考慮し、必要に応じて調整することが大切です。
「AutoFit」で列幅を自動調整するマクロを導入すれば「長文を入力してもテキストが見切れなくなる!」「入力作業の効率化!」というメリットがありますが、
「結合されたセルにAutoFitは使えない」「印刷範囲が大きくズレる可能性がある」というデメリットもあります。
この2つのデメリットを詳しくご紹介します。
デメリット① 結合されたセルでAutoFitは使えない
結合されたセルに入力されたテキストにはAutoFitは使えないので注意が必要です。
実際に結合されたセルに対してautofitのVBAを実行しても変化がありませんでした。
こんな感じ
セル結合が頻繁に使われているエクセルファイルに列幅を自動調整するマクロの導入は困難!
ということになります。
デメリット② 印刷範囲が決められた資料でAutoFitを使うと、印刷範囲がずれてしまう
セル内に非常に長い文字列が入力されていると、
その列の幅が他の列に比べて極端に広がってしまいシート全体のバランスが崩れる
ことがあります。
さらに、印刷範囲がピシッと設定されたシートで列幅を変更してしまうと
印刷範囲がズレてうまく印刷できなくなる
ので注意が必要です。
印刷範囲が厳密に設定されているエクセルでは、
入力したテキストに列幅を調整するのではなく列幅に合わせてテキストを調整
しましょう。
とは言いつつ、
決められた様式の列幅や行間をぐちゃぐちゃにしてしまい元に戻せなくなった!
こんな経験をしたことがある方はめちゃくちゃ苦労したのではないでしょうか。。。
こんな問題は『列幅情報を取得するVBA』で解決することができます。
どんなVBAかというとこんな感じ
原図(決められた様式)から列幅の情報を取得し調整する
こんな処理をするVBAです。
このVBAの最大の特徴が、
入力したテキストを消去せずそのままの状態で列幅を元に戻せる!
ということです。
テキストを入力したけど列幅がぐちゃぐちゃになってしまった!テキストはそのままにして列幅だけを元に戻したい!!
こんな場面で役立ちます。
関連記事「列幅・行間を自動調整するVBA」では列幅の情報を取得し元に戻すVBAの解説、ファイルのダウンロードが可能です。
決められた様式を編集する作業が多い!という方は是非チェックしてみてください。
よくあるトラブルとその対処法
autofitを使用する際に予期せぬトラブルが発生することもあります。
事前に対処法を知っておくことで問題が発生した場合でもスムーズに解決することが可能です。
autofitを使いこなすための対処法を詳しくご紹介します。
autofitが機能しない場合の原因と解決策
autofitが機能しない原因として考えられるのは、
結合セルの存在やセル内の非表示文字
です。
先ほども解説していますが、結合セルがあるとautofitは正しく動作しないことがあります。
また、
セル内に改行や隠し文字があるとそれに合わせた列幅にならない
ことがあります。
このような場合は、結合セルを避ける、手動で列幅を調整する、で対応しましょう。
列幅が意図通りに調整されない時の対処法
意図した通りに列幅が調整されない場合は、
コードの範囲指定や条件設定を見直すことが重要
です。
例えば、複数列を対象にautofitを適用する場合
範囲が正しく設定されているか確認し不必要な列を含めないように注意
します。
autofitが正常に動作しない場合の大半が
範囲指定に問題があることが原因
です。
VBA autofitと他の自動調整機能の違いを理解する
VBAのautofitは、
他の自動調整機能と比較してカスタマイズ性が高い
ことが特徴です。
Excelには標準で列幅や行高を自動調整する機能がありますが、
VBAを使うことで条件に応じた柔軟な調整が可能になります。
- 特定のシートだけにautofitを適用する、
- 特定の範囲内でのみ自動調整する
- 特定の範囲内ではautofitではなく大きさで列幅を指定する
VBAを使えばより細かい設定ができるため、作業の幅が広がります。
VBAを使わないで列幅を調整する方法
VBAを使わず、マウス操作で指定した列幅をまとめて調整する方法をご紹介します。
上記で紹介している「AutoFit」の処理をマウスを使って行う!というイメージです。
やり方① 調整したい列をまとめて選択
やり方② まとめて選択した列の右端をダブルクリック
ダブルクリックする列は選択中の列であればどこをダブルクリックしても実行されます。
処理結果
エクセル業務の効率化に欠かせない操作なので是非やり方をマスターしてください。
業務内容に合わせた「列幅を自動調整するVBA」を導入するには
列幅を自動調整するVBAを導入には2つの方法があります。
- 自ら業務内容に合わせたマクロを開発する
- マメBlogにマクロ開発依頼をする
一番手っ取り早い方法は「自ら業務内容に合わせたVBAを開発する」ですが、
VBAの編集は難易度が高い!VBAを作る時間がない!という方が多いのではないでしょうか。
このような悩みを抱えている方は2つ目のマメBlogにマクロ開発依頼をする方法がおすすめです。
マメBlogマクロ開発の特徴がこちら
- 格安
- スピード納入
- 臨機応変なコード作成
こんな作業を自動化したい!こんなことってできるの?
という感じでザックリとした依頼内容でOK。
「マメBlogのマクロ開発」についての詳細は下記のリンクを参考にしてください。
毎日行っている単純作業やルーティーン作業はVBAを使って自動化してしまいましょう!
処理内容にもよりますが、
1時間以上かかっていた作業もVBAを使えば1クリックで完了してしまう
なんてことが多々あります。
ディスカッション
コメント一覧
まだ、コメントがありません