Wakizaka2018/9/52019/5/31皆さんは、VBAで「オーバーフローしました」というエラーを見たことがありますか?「オーバーフローしました」のエラーは、変数を使って処理を書いているときにおこりやすいエラーです。オーバーフローしました」のエラーが起こる原因について簡単に解説します。オーバーフローしました」のエラーは、型ごとに決まっている桁数を超えた値を入れてしまった場合に起こるエラーです。そのため、-32,768よりも小さく、32,767よりも大きい数値を入れた場合はエラーになります。Sub実行結果:このエラーは、桁数が多い型に変えるだけで簡単に対処することができます。Sub実行結果:50000整数を使う場合はInteger型からLong型、小数を使う場合はSingle型からDouble型に変えるとエラーがでなくなります。このように、型そのものを桁数の多い型に変えるだけで簡単に対処することができます。計算した結果を変数に代入する場合、変数の型の範囲内にもかかわらずエラーが起きてしまうときがあります。2,147,483,647」の範囲内になっているのに、なぜエラーになるんだろう?と思った方も多いのではないでしょうか。Integer型の数値(10)」をかけて計算している意味になります。32,767」を超えた50000になっているため、エラーになるわけですね。このエラーは計算に使っている数値を事前にLong型にすればOKなので、以下のどちらかでエラー回避できます。Subサンプル1はCLng関数を使ってLong型を指定した数値を使い、サンプル2は計算に使う値をLong型の変数で計算することでエラーを回避しています。数値が変更になることも考えるとサンプル2がおすすめですが、ぱぱっと処理を進めたいときはサンプル1の方が作りやすいので、用途に応じて使い分ければOKです!【よくある間違い】桁数の多い型のみ使えばいいのでは?ここまで聞くと、桁数の多い型を最初から使えばいいと思う方もいるかもしれません。確かに、桁数の多い型を使えばオーバーフローのエラーは起こりづらくなります。変数はパソコンのメモリ領域を使ってしまうため、無駄に桁数の多い型を使いすぎると処理の速度にも影響が出てしまいます。そのため、変数に入れる値の範囲にあった型を設定するのがおすすめです!ちなみに、処理の速度はTimer関数を使って簡単に調べることができます。補足:エラー時にデバッグ画面に移動しない方法エラーが発生したときにVBEの画面に移動してしまうとVBAを知らない人がツールを使っていた場合はびっくりしてしまいますよね。Function実行結果:メッセージの内容はほとんど同じですが、VBEに移動せずにメッセージを表示することができます。したことで使い勝手が大きく変わるので、エラー処理を入れる癖をつけるのがおすすめです。2019年4月21日まとめ今回は、「オーバーフローしました」のエラーが起きる原因・対処方法について解説しました。このエラーは、変数を使って処理を書くようになってくると起こりやすいエラーです。エラーが起きてしまったときは、この記事を見つつ対応してみてくださいね!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。Wakizaka新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。インフラ、製造、テスト、運用保守など、様々な経験あり。侍ブログ編集部として、これまでに200記事以上の記事を執筆。現在はフリーランスエンジニア兼テックライターとして活動中。