VBA宏运行时错误6:溢出-循环内编码
这个错误有问题。我正在创建一个GA,循环是将我的适应值分配给一个数组 一些变量VBA宏运行时错误6:溢出-循环内编码,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 T
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
很抱歉,我对VBA相当陌生。当您创建的整数表达式的计算值大于16位带符号整数的值时,会出现溢出情况。给定表达式,FitValarr(i)或表达式2^(j-1)的内容可能溢出。建议将当前声明为Int的所有变量更改为Long。长整数是32位有符号值,提供了相应更大的可能值范围。我有相同的运行时错误6。经过多次调查,我发现我的是一个简单的“除以零”错误。我设置了一个整数值来保存邮政编码,错误6事件困扰着我——直到我意识到邮政编码85338超出了整数的容量。。。 虽然我不认为邮政编码是一种“价值”,但它确实被解释为一种价值。我怀疑地址和其他“非数字”数值也会发生同样的情况。将变量更改为字符串解决了问题。
我只是没想到邮政编码是一个“数字值”。这是我学到的一课。您是否将FitValarr的尺寸标注为
FitValarr(1到PopSize)
任何地方?嗯,不。。。我是否应该添加ReDim FitValarr(1到PopSize)
FitValarr(i) = FitValarr(i) + Poparr(i, counter) * 2 ^ (j - 1)