サイトについて      連絡先   検索

VBA エラー 6 オーバーフローしました。

はじめに

Excel VBA マクロのエラー 6 「オーバーフローしました。」の対処法を紹介します。

データ型の範囲を超えた値を代入しようとすると発生します。

  • 目次
    • 解決する

解決する

大きい型を使用する

Integer 型の範囲は「-32,768 ~ 32,767」です。これに 60,000 を代入しようとすると、エラー 6 「オーバーフローしました。」が発生します。

Long 型のように、より大きいデータ型を使用するとエラーを解決できます。


Dim i As Integer
i = 60000 ' エラー

Dim l As Long
l = 60000 ' 正常

データ型の範囲は「データ型」をご覧ください。

型を変換する

Integer の計算結果が Integer の範囲を超えるときも、エラーが発生します。

Integer 型の変数を Long に入れたり、型を変換すると解決できます。


Dim l As Long
l = 500 * 100 ' エラー、500 も 100 も Integer 型として処理されるのでエラーになります。

Dim l As Long
Dim a As Long
Dim b As Integer

a = 500 ' Long 型に入れてから計算すると正常に処理できます。
b = 100
l = a * b ' 正常

Dim l As Long
Dim a As Integer
Dim b As Integer

a = 500
b = 100
l = CLng(a) * b ' 正常、型を変換する

上記のコードの a と b どちらかを Long 型にすればエラーになりません。

  • 目次
    • 解決する