セル先頭のシングルクォーテーションが邪魔

セルの表示形式は初期状態は「標準」になっています。「標準」のセルに数字を入力すると、数値として解釈されます。例えば「0.0」と入力しても右寄せで「0」と表示されます。

Excel使い始めの方が嫌がるExcelのおせっかい機能とも言えます。

その対応方法としてよく使われる方法が、先頭にシングルクォーテーションを付けて「’0.0」と入力する方法です。こうすることでセルに「0.0」と表示されます。

ただ、このシングルクォーテーションで数値を数字とする入力方法は欠点があります。それは、セルの表示形式を「標準」から「数値」などに変更してもシングルクォーテーションがあるせいでそちらの方が有効になり、見た目は「文字列」のままで扱われてしまう点です。

なので、Excelの操作に慣れている人はセルの書式設定(Ctrl + 1キー、または、セルを右クリック+セルの書式設定)で、表示形式から「文字列」を選んで、入力した内容をそのまま表示することもあるでしょう。

このように、表示形式でセルの表示をきちんと設定したい人にとっては、セル先頭のシングルクォーテーションの入力が邪魔な場合が多々あります。

そこで以下ではセル先頭にシングルクォーテーションを設定されているセルの検索、および、シングルクォーテーションを一括削除する方法を紹介します。

先頭がシングルクォーテーションのセルに背景色を設定する

以下のコードはアクティブシートでシングルクォーテーションが先頭に設定されているセルが分かるようにします。

5行目のActiveSheet.UsedRangeはアクティブシートで入力されているセル範囲を意味します。

明示方法は背景色を黄色にしています。イミディエイトウィンドウにもセル座標を出力します。

実行結果

A1セルとB3セルに「’0.0」と入力している場合の結果です。それぞれが黄色に設定され、イミディエイトウィンドウにもセル座標が出力されます。

選択範囲のセル先頭のシングルクォーテーションを一括削除する

以下のコードは選択セル範囲の中で、先頭文字がシングルクォーテーションの場合は削除します。

コメントにも書いていますが、RangeオブジェクトのValueプロパティを再設定するとシングルクォーテーションが削除されます

これはどういうことかというと、セル先頭のシングルクォーテーションはValueプロパティには含まれておらず、例えば「’1.00」とシングルクォーテーション付きで入力していてもValueプロパティでは「1.00」として扱われているため、それをValueプロパティに再設定することでシングルクォーテーションが外れることになります。

先のコードで先頭がシングルクォーテーションかどうかの判定にPrefixCharacterプロパティを使っていましたので、これを編集すればシングルクォーテーションを削除できそうな気になりますが、残念ながらPrefixCharacterプロパティは参照しかできません。PrefixCharacterプロパティを””に更新してシングルクォーテーションを削除しようとしてもエラーになります。

なお、コード実行後はセルの表示形式に合わせて表示されます。表示形式が「標準」のままであれば「’0.0」は「0」が表示されますが、「数値」になっていれば表示形式の実体は「0_」のため、「’0.0」は「0△」(△は半角スペース)のようにの右に空白が付いて表示されます。

実行結果
実行前(「’0.0」と入力)

実行後(「’0.0」が「0.0」として入力されて「0」として表示)