目次
概要
Excelでは、セルに収まりきらない数値や日付があると、「###」と表示されることがあります。これはエラーではなく列の幅が不足していることによる表示上の問題です。
VBAを使えば、このような「###」の表示を検出して、**自動で列幅を調整(AutoFit)**することが可能です。
本記事では、アクティブセルに「###」が表示されているかを確認し、必要に応じて列幅を自動調整する方法について解説いたします。
サンプルコード
Sub AutoAdjustColumnIfSharp()
With ActiveCell
If Not IsError(.Value) Then
If .Value <> .Text And Left(.Text, 1) = "#" Then
.EntireColumn.AutoFit
End If
End If
End With
End Sub
コード解説
ActiveCell
現在選択中のセルを対象とします。IsError(.Value)
セルの値がエラー(例:#DIV/0!
など)でないことを確認しています。「###」表示はエラーではないため、処理対象とするためにこのチェックを入れます。.Value <> .Text
セルの実際の値と表示されている文字列が異なる場合、何らかの表示上の問題があることを示します。Left(.Text, 1) = "#"
表示の先頭が「#」であれば、「###」の可能性が高いと判定します。.EntireColumn.AutoFit
列幅を自動調整して、値が収まるようにします。
応用例
このマクロは以下のような場面で活用できます。
- 数値や日付が折り返し表示になっていないか確認したいとき
- テンプレートファイルにおいて、データ入力後に自動で整形したいとき
- ユーザーが見やすいように帳票の仕上げ処理を加えたいとき
注意点
- このコードはアクティブセルのみを対象としています。必要に応じて範囲全体や複数セルへの処理に拡張することも可能です。
- 列幅を固定して使いたいレイアウトには不向きな場合もあります。
まとめ
本記事では、VBAを使ってセルに「###」が表示されている場合に自動で列幅を調整する方法をご紹介いたしました。
「###」は一見エラーのように見えますが、単なる表示の問題です。自動化により、ユーザーにとって見やすく整った表を提供することができます。