VBA宏运行时错误6:在循环内溢出编码

时间:2012-09-25 17:54:16

标签: vba excel-vba excel

遇到此错误的问题。我正在创建一个GA,循环是将我的适应值分配给一个数组。

一些变量

Dim Chromolength as integer
Chromolength = varchromolength * aVariables 
Dim i as integer, j as integer, counter as integer
Dim Poparr() As Integer
Dim FitValarr() As Integer

代码:

ReDim Poparr(1 To PopSize, 1 To Chromolength)

For i = 1 To PopSize                
  For j = 1 To Chromolength       
    If Rnd < 0.5 Then           
        Poparr(i, j) = 0
    Else
        Poparr(i, j) = 1        
    End If
  Next j
Next i

For i = 1 To PopSize                   
 j = 1                           
 counter = Chromolength              
 Do While counter > 0  
   FitValarr(i) = FitValarr(i) + Poparr(i, counter) * 2 ^ (j - 1)          
  j = j + 1                   
  counter = counter - 1       
 Loop
Next i      

我遇到了问题:

FitValarr(i) = FitValarr(i) + Poparr(i, counter) * 2 ^ (j - 1) 

我道歉,我对VBA很新。

3 个答案:

答案 0 :(得分:16)

当您创建一个整数表达式时,会出现溢出情况,该表达式的计算结果大于可以用16位有符号整数表示的值。给定表达式,FitValarr(i)的内容或表达式2 ^(j-1)可能溢出。建议将当前声明为Int的所有变量更改为Long。长整数是32位有符号值,并提供相应更大范围的可能值。

答案 1 :(得分:0)

我有相同的运行时错误6。经过大量调查,我发现我的是一个简单的“除以零”错误。

答案 2 :(得分:0)

我设置了一个整数值来保存邮政编码,并且错误6事件困扰着我-直到我意识到邮政编码85338超过了一个整数的容量... 虽然我不认为邮政编码是一个“值”,但是肯定可以将其解释为一个“值”。我怀疑地址以及其他“非数字”数值也会发生同样的情况。将变量更改为字符串可以解决此问题。 我只是没有想到邮政编码是一个“数字值”。经验教训。