まえきんブログ

*日常・趣味・体験談・スキルアップ(Excel VBA ×ビジネス統計スペシャリスト)についての雑記ブログ*

【Excel VBA学習 #27】セルに「###」が表示されているかどうかを判定する

まえきんです!

今回はセルに「###」が表示されているかどうかを判定する

方法について学習しましたのでご紹介します。

f:id:maekinblog:20210126204446p:plain

セルに数値を入力したとき、列の幅が足りずすべての数値が

表示できない場合、セルには「###」のような記号が表示されます。

マクロでこうしたセルを判定してみます。

まず第1に、アクティブセルに入力された左1文字が「#」で

始まっているかどうかを判定するのが手っ取り早いですが、

例えば数式エラーの「#DIV/0!」や「#NAME」なども左1文字が「#」で

始まっているため、IsError関数を使用して数式エラーと切り分ける必要があります。

 

次に、セルに表示された「###」をコード上でどう表現、

判定するかという話ですが、ValueかTextプロパティが思い浮かびます。

注意が必要なのは、「###」は列の幅が足りずに表示されているだけのため、

Valueプロパティではわかりません。そこで、セルに表示されている文字列を返す

Textプロパティを使用する方向に行きつくかと思います。

ただし、例えばセルに文字列で「#1」のように意図して入力されていると

区別がつきません。そこで、VBAコードのキャプチャにあるように、

ValueプロパティとTextプロパティで比較して、入力されているデータと

表示されているデータが異なっていることを判定します。

この条件と、セルに入力された左1文字が「#」で始まっていることを

両方満たせば、セルに「###」が表示されていることが確定できます。

今回のマクロではこの条件を満たした場合、列幅が

自動調整されるように設定しています。

簡易的にマクロの実行ボタンを作成して、上記のコードを

実行すると下記のように結果が得られます。

【実行前】

f:id:maekinblog:20210126210814p:plain

【実行後】

f:id:maekinblog:20210126210956p:plain

アクティブセルB2に表示されていた「####」が列幅の不足による

ものと判定され、列幅が自動調整されていることが確認できました!

VBAでこんなこともできるとは!奥が深いですね(^^)

最後まで読んで頂きありがとうございました!ではまた!

--------------------------------------------------------------------------------------------------

こちらのカテゴリ・過去の記事も

よろしければ是非よろしくお願いします(^^)

スキルアップ.Excel VBA(検証編) カテゴリーの記事一覧 - まえきんブログ (hatenablog.jp)

スキルアップ.Excel VBA(書籍編) カテゴリーの記事一覧 - まえきんブログ (hatenablog.jp)

--------------------------------------------------------------------------------------------------