1

Итак, я хочу создать функцию для вычисления «стоимости» решения проблемы.Сообщение об ошибке функции VB

Я создал одномерный массив 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? Он ищет х, чтобы быть массивом, возможно, это не так, поэтому он бросает. –

+0

X (i, j) уже является массивом в подпроцедуре. Он формирует массив целых чисел, для которых вычисляется стоимость. В принципе, я создаю «волшебный квадрат». X (i, j) образует начальное решение проблемы. Функция вычисляет стоимость этого первоначального решения (т. Е. Как далеко от идеального магического квадрата) – Matt

ответ

0

Вы не можете использовать UBound многомерный массив. Вы должны UBound одно конкретное измерение массива. Поэтому, если X(i,j) - ваш массив, вы должны сделать либо UBound(X,1), чтобы обозначить первое измерение, либо UBound(X,2) для второго измерения. Это зависит от того, сколько у вас размеров. Взгляните at w3schools, их статья охватывает многомерные массивы.

+0

Хорошо, хорошо, я собираюсь отправиться спать, но завтра я посмотрю. Спасибо за вашу помощь! – Matt

+0

@Matt Если это решает вашу проблему, обязательно отметьте ее как решение. –