Excel VBA オーバーフローしましたは許容範囲を超えたエラー

 

Excel VBA 「オーバーフローしました」というエラーは、変数や計算結果がそのデータ型の許容範囲を超えたときに発生します。データ型ごとに格納できる範囲が決まっており、それを超えた場合にこのエラーが表示されます。具体的な使い方や、注意点やサンプルコードを紹介します。

 

Excel VBA 「オーバーフローしました」発生シーン

以下のようなシーンで発生します。

・ループ処理や計算を行う際

・大きな数値を扱う際

・関数やプロシージャでの値の受け渡し

防ぎ方

オーバーフローエラーを防ぐためには、適切なデータ型を使用し、数値がその範囲内に収まるようにします。

 

ポイント

・データ型の選定には注意が必要です。例えば、Integer型は -32,768 から 32,767 までの範囲しか扱えません。

・大きな数値を扱う場合には、Long型やDouble型を使用することを検討します。

・変数の値が意図せず大きくなる場合がありますので、値の範囲を事前にチェックすることが重要です。

 

Excel VBA 「オーバーフローしました」を防ぐサンプルコード
Option Explicit

Sub OverflowExample()
    Dim i As Integer
    i = 32768 ' Integer型の範囲を超える値を代入しようとする
End Sub

このコードは、i がInteger型であるため、32768を代入しようとするとオーバーフローエラーが発生します。

Option Explicit

Sub OverflowSolution()
    Dim i As Long
    i = 32768 ' Long型はより大きな数値を扱える
End Sub

このコードでは、i をLong型に変更することで、32768を代入してもエラーが発生しません。

Option Explicit

Sub OverflowCheck()
    Dim i As Long
    Dim inputValue As Long
    inputValue = 32768 ' 任意の数値を入力
    
    If inputValue < -2147483648# Or inputValue > 2147483647 Then
        MsgBox "数値が範囲外です"
    Else
        i = inputValue
    End If
End Sub

このコードでは、数値がLong型の範囲内であるかをチェックし、範囲外の場合はメッセージボックスを表示します。

オーバーフローエラーはデータ型の範囲を超えた値を扱ったときに発生します。適切なデータ型を選び、数値の範囲をチェックすると、エラーを防ぐことができます。初心者でも基本的なデータ型の理解と適切な使い方をマスターすると、VBAのプログラムを安定して動作させることができます。

 

毎日のルーチン作業をExcel VBAで自動化し、時間を有効活用しませんか?Excel VBAエキスパート資格取得問題集を活用して資格取得、そして効率的な仕事を実現しましょう!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

ExcelVBAの学習方法で効果的な学び方を知りたい方は、下記「Excel VBA初心者のための効果的な学習ガイド」をご確認ください。