最終更新日:2023-07-12列幅不足による###表示や指数表示を判定する列幅が不足していると、数値が###表示や指数表示になってしまいます。数値が見えないのでは困ります。通常は手作業で列幅を見やすい幅に調整しますが、マクロVBAで正しく表示されているかどうかの判定をしたい場合のサンプルVBAと解説です。列幅不足による###表示や指数表示は、フォントによって変わりますし、PC環境(ディスプレイの拡大縮小)の影響も受けます。そもそも表示形式がどうなっているかも考慮しなければなりません。Range.TextブロバティRangeには、ValueValue2Textこれらのプロバティがあり、セルの表示状態により取得される値が違ってきます。値の取得および設定が可能です。Value2セルの値を設定します。値の取得および設定が可能です。Text指定されたオブジェクトに対し、文字列を設定します。値の取得のみ可能です。文字列型セルの値について(Value,Value2,Text)|VBA技術解説マクロVBAにおいて、セルの値を操作する事は基本の基本ですが、意外に理解できていない場合が多いようです。指定されたセル範囲の値を表すバリアント型(Variant)の値を設定します。値の取得および設定が可能です。Function上記VBAは、列幅不足により###表示や指数表示になっている場合は「True」、それ以外は「False」を返します。最初から文字列で入力されている場合の対応が必要です。最初から文字列として"#"や指数の"E"が入力されている場合です。この場合は、セル値のValueプロパティとTextプロパティが一致します。.TextTextプロパティの最初の文字が"#"なら列不足として判定しています。「"#"0」このように表示形式で無理矢理"#"を表示している場合も「True」と判定されてしまいますが、さすがに対応する必要はないとは思います。表示形式に"0.E+00"のような指数形式が設定されているかの判定には、単純に"E"の文字が含まれているかで判定しています。これも表示形式で無理矢理"E"を表示しているような場合も含まれてしまいますが、これもさすがに対応する必要はないと思います。表示形式は条件付き書式で変更されている場合もあります。これに対応するには、DisplayFormatプロパティで判定する必要があります。条件付き書式で変更された書式を取得する条件付き書式が設定されている場合、当然ですが見た目は、本来そのセルに設定されている書式ではなく、条件付き書式の条件によって設定されている書式になります。VBAで、この条件付き書式によって設定された書式を取得します。これが取得できるようになったのは、Excel2010からですので、このページで紹介するVBAコードはE...このように、本当に厳密に判定しようとすると結構難しい事になります。上記VBAでは、普通によくある場合だけに対応してみましたが、必要に応じてより厳密な判定を追加したりして使ってみてください。・CharactersプロパティとCharactersオブジェクトの使用例ユーザーに絶対に停止させたくない場合のVBA設定ユーザー操作によりマクロVBAが実行中に停止させられてしまう場合があります。再実行可能であれば問題ありませんが、途中で強制停止された場合のデータ保証が出来ないと言った場合もあるでしよう。マクロ実行でも、以下のキーボード操作でVBAは停止できてしまいます。見るTRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)無効な前方参照か、コンパイルされていない種類への参照です。列幅不足による###表示や指数表示を判定するこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。列幅不足による###表示や指数表示を判定するこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。