EXCEL VBA オーバーフローしました。(実行時エラー:6)エラー原因・修正・回避・対処・解決
EXCEL VBA オーバーフローしました。(実行時エラー:6)エラー原因・修正・回避・対処・解決
●はじめに
今回、EXCEL VBA実行時に発生する【実行時エラー’6’オーバーフローしました。】のエラー発生の原因や対処方法に説明いたします。VBA入門者が時々体験するエラーです。エラーの発生原因をきちんと押さえて、対処できるようにしましょう。
●オーバーフローしました。(実行時エラー:6)エラー原因
【実行時エラー’6’オーバーフローしました。】についてのエラー原因を説明いたします。エラーの原因としては、変数の最大値または、最小値を超えて値を格納しようとした時や数値の計算を行った時に、発生します。
形名 | データ型 | 範囲 |
---|---|---|
バイト型 | Byte | 0~255までの整数 |
整数型 | Integer | -32,768~32,767の整数 |
長整数型 | Long | -2,147,483,648~2,147,483,647の整数 |
EXCEL VBA オーバーフローしました。(実行時エラー:6)【エラー発生例①】
●【エラー発生例①】発生原因
下記のプログラムのエラー原因を考えてみましょう。
【プログラム①】
1 2 3 4 5 6 7 8 9 |
Sub OverFlow01()'オーバーフロー① 原因発生 Dim Total As Long Total = 32767 + 1 MsgBox Total End Sub |
●【エラー発生例①】解決策
【解決プログラム】
1 2 3 4 5 6 7 8 9 |
Sub OverFlow01A() 'オーバーフロー①解決方法 Dim Total As Long Total = CLng(32767) + 1 MsgBox Total End Sub |
EXCEL VBA オーバーフローしました。(実行時エラー:6)【エラー発生例②】
●【エラー発生例②】発生原因
下記のプログラムのエラー原因を考えてみましょう。
【プログラム②】A/B ※繰り返し処理のエラー【For Nextの場合】
【Do While Loopの場合】
【上記プログラム実行結果】
【プログラム②】A/B ※繰り返し処理のエラー【For Nextの場合】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
' '---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の場合】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
' '---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の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
' '---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の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
' '---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)【エラー発生例③】
●【エラー発生例③】発生原因
下記のプログラムのエラー原因を考えてみましょう。
【プログラム③】
【上記プログラム実行結果】
【プログラム③】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
' ' 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 |
【上記プログラム実行結果】
【エラー原因説明】
●【エラー発生例③】解決策
【解決プログラム】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
' ' 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に関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。