1

所以我想創建一個函數來計算問題解決方案的「成本」。VB功能錯誤信息

我創建了一個包含整數值的1維數組Sum(m)。這在不同的子程序中被引用。

Function Cost(sum As Integer, a As Integer) As Long 

Dim total As Long 

'Calculate cost 
For m = 1 To 2 * n + 2 
    total = total + (sum(m) - a)^2 
Next m 
Cost = total 

End Function 

我不能完全肯定是什麼,我應該用在線路

Function Cost(sum As Integer, a As Integer) As Long 

當我嘗試調用該函數在我的子過程中,我得到的括號內的部分錯誤消息 - 編譯錯誤:預期數組。這發生在線

SolCost = Cost(sum, UBound(x)) 

我真的很困惑,爲什麼這個錯誤發生。這可能是VB嚴重缺乏經驗。希望你們能幫助我。

如果您需要更多信息,請不要猶豫,問。任何幫助是極大的讚賞。

+0

什麼是x?它正在尋找x是一個數組,它可能不是,這就是它拋出的原因。 – 2013-04-22 23:52:04

+0

X(i,j)已經是子過程中的一個數組。它形成了計算成本的整數數組。基本上,我正在創建一個'魔術廣場'。 X(i,j)形成問題的初始解決方案。這個函數計算出這個初始解決方案的成本(即,它離完美的魔方有多遠) – Matt 2013-04-22 23:55:26

回答

0

您不能UBound像這樣的多維數組。您必須使用UBound陣列的一個特定維度。因此,如果X(i,j)是您的陣列,則必須執行UBound(X,1)來表示第一維或第二維的UBound(X,2)。這可以擴展到您擁有的許多維度。看看at w3schools,他們的文章涵蓋了多維數組。

+0

好吧,我要去睡覺,但明天我會去看看。感謝您的幫助! – Matt 2013-04-23 00:10:53

+0

@Matt如果這解決了您的問題,請務必將其標記爲解決方案。 – 2013-04-23 00:12:24