VBAでセルが「###」と表示されたときに列幅を自動調整する方法

目次

概要

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を使ってセルに「###」が表示されている場合に自動で列幅を調整する方法をご紹介いたしました。

「###」は一見エラーのように見えますが、単なる表示の問題です。自動化により、ユーザーにとって見やすく整った表を提供することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次