未分類 PR

【VBA】Format関数で実行時エラー’6’「オーバーフローしました。」が出た

記事内に商品プロモーションを含む場合があります。
当サイトは、アフィリエイト広告を利用しています。

こんにちは、今回の記事はExcelのマクロ、VBA実行時にエラーが出た時どうしたか?という記事になります。とある日、日付の変換を行おうとFormat関数を使ったマクロを実行すると以下のエラーがでました。

実行時エラー'6'
オーバーフローしました。
悩める人
悩める人
何が悪いんだ…!どうしたら?

となったので、記事にしてみます。状況によって原因等は違うと思いますが、何かの参考になれば。それでは、いってみましょう!

原因:指定した値がExcelの想定外だったため

今回エラーが出ていたコード(一部)は以下です。

MsgBox Format("20240605", "yyyy/mm/dd")

で、なんかこれで大丈夫そう~と気軽な実行したのですが、冒頭に記載したように、以下のエラーがでました。

実行時エラー'6'
オーバーフローしました。

表示形式を整えたい値を「20240605」と指定したのですが、これがエラーの原因だったようです。例えば「2024/06/05」や「2024年6月5日」などであればエラーは出ないのですが、「20240605」と指定したのでエラーとなりました。

これは、「20240605」が日付ではなくシリアル値として認識されたためかと思います。

シリアル値とは、日付を数値で扱う表現方法で1900年1月1日を1としてカウントアップしていく値です。

で、シリアル値の最大値は9999年12月31日で、"295846"となります。今回指定していた値が【20240605 > 2958465】となり、指定した値が最大値を超えているため換算できずにオーバーフロー(扱える上限値を超えてしまった)というエラーとなっていたようです。

さいごに

いかがだったでしょうか。同じような疑問を持たれた方の参考になれば幸いです。それではまた次の記事でお会いしましょう!