Categories: VBA基礎

EXCEL VBA  オーバーフローしました。(実行時エラー:6)エラー原因・修正・回避・対処・解決

 

 

EXCEL VBA  オーバーフローしました。(実行時エラー:6)エラー原因・修正・回避・対処・解決

 

 

●はじめに

今回、EXCEL VBA実行時に発生する【実行時エラー’6’オーバーフローしました。】のエラー発生の原因や対処方法に説明いたします。VBA入門者が時々体験するエラーです。エラーの発生原因をきちんと押さえて、対処できるようにしましょう。

 

 

●オーバーフローしました。(実行時エラー:6)エラー原因

【実行時エラー’6’オーバーフローしました。】についてのエラー原因を説明いたします。エラーの原因としては、変数の最大値または、最小値を超えて値を格納しようとした時や数値の計算を行った時に、発生します。

形名データ型範囲
バイト型Byte0~255までの整数
整数型Integer-32,768~32,767の整数
長整数型Long-2,147,483,648~2,147,483,647の整数

 

 

EXCEL VBA  オーバーフローしました。(実行時エラー:6)【エラー発生例①】

 

●【エラー発生例①】発生原因

下記のプログラムのエラー原因を考えてみましょう。
【プログラム①】

Sub OverFlow01()'オーバーフロー① 原因発生

    Dim Total As Long

    Total = 32767 + 1
    
    MsgBox Total

End Sub

【上記プログラム実行結果】

【エラー原因説明】

 

 

●【エラー発生例①】解決策

 【解決プログラム】

Sub OverFlow01A() 'オーバーフロー①解決方法

    Dim Total As Long

    Total = CLng(32767) + 1
    
    MsgBox Total

End Sub

 

 

EXCEL VBA  オーバーフローしました。(実行時エラー:6)【エラー発生例②】

 

 

 ●【エラー発生例②】発生原因
下記のプログラムのエラー原因を考えてみましょう。
【プログラム②】A/B ※繰り返し処理のエラー【For Nextの場合】
'
'---For Nextの場合----------------------------
'
Sub OverFlow02_A() 'オーバーフロー②A 原因発生

    Dim I As Integer
    
    For I = 0 To 32767
       
       'Debug.Print I
    
    Next I
    
End Sub

【Do While Loopの場合】

'
'---Do While Loopの場合----------------------------
'

Sub OverFlow02_B() 'オーバーフロー②B 原因発生
 
  Dim I As Integer
 
    I = 0
        Do While I <= 32767
        
        I = I + 1
        
        Loop
        
    MsgBox I
 
End Sub

【上記プログラム実行結果】

【エラー原因説明】:For Nextの場合


【エラー原因説明】:Do While Loopの場合

 

 

●【エラー発生例②】解決策 ループ処理

【解決プログラム】

For Nextの場合

'
'---For Next の場合----------------------------
'

Sub OverFlow02A_Ans() '解決プログラム

    Dim I As Long ’Integer ⇒ Long へ変更
    
    For I = 0 To 32767
       
       Debug.Print I
    
    Next I
    
End Sub

・Do While Loopの場合

'
'---Do While Loopの場合----------------------------
'

Sub OverFlow02B_Ans() '解決プログラム
 
  Dim I As Long  'Integer ⇒ Long へ変更
 
    I = 0
        Do While I <= 32767
        
        I = I + 1
        
        Loop
        
    MsgBox I
 
End Sub

 

 

 

 

EXCEL VBA  オーバーフローしました。(実行時エラー:6)【エラー発生例③】

 

 

●【エラー発生例③】発生原因
下記のプログラムのエラー原因を考えてみましょう。
【プログラム③】
'
'
Sub OverFlow06() 'オーバーフロー③ 原因発生

    Dim A As Integer
    Dim B As Byte
    Dim C As Byte
    
    B = 250
    C = 250
    
    A = B + C
    
    MsgBox A

End Sub

【上記プログラム実行結果】

【エラー原因説明】

 

●【エラー発生例③】解決策

【解決プログラム】

'
'
Sub OverFlow06A() 'オーバーフロー③ 解決策

    Dim A As Integer
    Dim B As Byte
    Dim C As Byte
    
    B = 250
    C = 250
    
    A = CInt(B) + C
    
    MsgBox A

End Sub

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA