まえきんです!
今回はセルに「###」が表示されているかどうかを判定する
方法について学習しましたのでご紹介します。
セルに数値を入力したとき、列の幅が足りずすべての数値が
表示できない場合、セルには「###」のような記号が表示されます。
マクロでこうしたセルを判定してみます。
まず第1に、アクティブセルに入力された左1文字が「#」で
始まっているかどうかを判定するのが手っ取り早いですが、
例えば数式エラーの「#DIV/0!」や「#NAME」なども左1文字が「#」で
始まっているため、IsError関数を使用して数式エラーと切り分ける必要があります。
次に、セルに表示された「###」をコード上でどう表現、
判定するかという話ですが、ValueかTextプロパティが思い浮かびます。
注意が必要なのは、「###」は列の幅が足りずに表示されているだけのため、
Valueプロパティではわかりません。そこで、セルに表示されている文字列を返す
Textプロパティを使用する方向に行きつくかと思います。
ただし、例えばセルに文字列で「#1」のように意図して入力されていると
区別がつきません。そこで、VBAコードのキャプチャにあるように、
ValueプロパティとTextプロパティで比較して、入力されているデータと
表示されているデータが異なっていることを判定します。
この条件と、セルに入力された左1文字が「#」で始まっていることを
両方満たせば、セルに「###」が表示されていることが確定できます。
今回のマクロではこの条件を満たした場合、列幅が
自動調整されるように設定しています。
簡易的にマクロの実行ボタンを作成して、上記のコードを
実行すると下記のように結果が得られます。
【実行前】
【実行後】
アクティブセルB2に表示されていた「####」が列幅の不足による
ものと判定され、列幅が自動調整されていることが確認できました!
VBAでこんなこともできるとは!奥が深いですね(^^)
最後まで読んで頂きありがとうございました!ではまた!
————————————————————————————————–
こちらのカテゴリ・過去の記事も
よろしければ是非よろしくお願いします(^^)
スキルアップ.Excel VBA(検証編) カテゴリーの記事一覧 – まえきんブログ (hatenablog.jp)
スキルアップ.Excel VBA(書籍編) カテゴリーの記事一覧 – まえきんブログ (hatenablog.jp)
————————————————————————————————–
コメント