オーバーフローしました。
-
Contents
- エラー表示
- エラーの発生理由について
- 解決方法は?
- 関連リンク
エラー表示
このエラーが発生すると、実行時に次のエラーが表示されます。
実行時 エラー '6'
オーバーフローしました。
エラーの発生理由について
エラーの原因は 変数の最大値を超えて値を格納しようとしたためです。このエラーは最終行を取得したときに発生することが多いでしょう。
下にこのエラーが発生するサンプルを載せます。このマクロは、マクロを実行しているブックの一番左のシートの最終行を取得します。ここで注目して欲しいのが、最終行をInteger型で取得しています。Integer型の最大値は「32,767」でエクセルの最終行は1,048,576行(xls形式は65,536行)のため、このエラーが発生します。
Sub TestFunc1()
Dim rowEnd As Integer
' マクロを実行しているブックの一番左のシートの最終行を取得
rowEnd = ThisWorkBook.WorkSheets(1).Cells(Rows.Count, 1).End(xlUp).Row
End Sub
解決方法は?
先述の通り、変数の最大値を超えて値を格納しようとしたため発生したエラーです。
Long型やDouble型等の大きい型に変更することによってこのエラーは消えます。
Sub TestFunc2()
Dim rowEnd As Long
' マクロを実行しているブックの一番左のシートの最終行を取得
rowEnd = ThisWorkBook.WorkSheets(1).Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Microsoft公式の解答
Microsoft公式のリファレンスには、下記のようにあります。
"割り当て先の制限を超える割り当てを試行したときにオーバーフローが発生します。 このエラーの原因と解決策を以下に示します。(参照元:Microsoft公式(オーバーフローしました (エラー 6) )"
時間がある方は参考までにどうぞ。