オーバーフローしました。

エラー表示

このエラーが発生すると、実行時に次のエラーが表示されます。
実行時 エラー '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) )"
時間がある方は参考までにどうぞ。

関連リンク

ページの先頭へ