2012-09-25 103 views
3

遇到此錯誤的問題。我正在創建一個GA,循環將我的健身值分配給一個數組。VBA宏運行時錯誤6:循環內的溢出編碼

一些變量

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。

+1

您是否將FitValarr標註爲'FitValarr(1到PopSize)'? –

+0

uhm no ...我應該添加 ReDim FitValarr(1到PopSize) –

回答

12

當您創建一個整數表達式時,會產生溢出情況,該整數表達式的值大於可以用16位有符號整數表示的值。給定表達式,FitValarr(i)的內容或表達式2 ^(j-1)可能溢出。建議將當前聲明爲Int的所有變量改爲Long。長整數是32位有符號值,並提供相應更大範圍的可能值。