質問: true end if case else exit sub end select end sub これで最初はうまくいき、20140712と入力されても、ちゃんと2014/7/12になります。 ところが、同じセルに再度yyyymmdd数字形式で入力すると、実行時エラー「オーバーフローしました」になってしまいます。多分セルが、yyyymmddの数字をシリアル値として見てありえない日付と判断したのだと思います。 どのようにコードを修正したらよろしいでしょうか? もう1点、日付をyyyymmddの連続数字で入力することは普通、エクセルではあまり見たことないですが、これって一般的な方法なのでしょうか?
回答: 横からすみません。 tom04さんの方法が基本的にいいと思うのですが、補足のコードで実行してみましたが、20140229だと2014/3/1になってしまいました。20120229はそのまま大丈夫でした。エクセル2013です。 単純に .value = left(.value, 4) & "/" & mid(.value, 5, 2) & "/" & right(.value, 2) でどうなのでしょう。これだと2014/02/29と表示されて補足で追加されているエラーチェックでメッセージが出ます。