У меня есть функция в VBA для Excel, которая возвращает двумерный массив.
Кроме того, у меня есть еще одна функция, которая берет два члена этого массива и складывает их вместе.
Наконец, у меня есть третья функция, котораяциклически обрабатывает результат второй функции, пока не будет достигнуто определенное значение.
Первые две функции работают нормально.Я могу индексировать массив на листе и получить хорошие результаты в ячейке для второй функции.
Третья функция также работает, но только если я закомментирую часть цикла.Когда я включаю do loop
в третьей функции, я получаю сообщение об ошибке «Значение, используемое в формуле - неправильный тип данных» в ячейке.
Я попытался решить проблему, сделав все в двойном (как показанов коде).
Я также закомментировал строки Do While
и Loop
и убедился, что код работает, пока он не зацикливается.
Это функция 1:
Function makeArray1(aaa As Double, bbb As Double, ccc As Double) As Double()
Dim workArray() As Double
ReDim workArray(1 To 4, 1 To 3)
workArray(1, 1) = aaa
workArray(1, 2) = bbb
workArray(1, 3) = ccc
workArray(2, 1) = aaa + 1
workArray(2, 2) = bbb + 1
workArray(2, 3) = ccc + 1
workArray(3, 1) = aaa + bbb
workArray(3, 2) = bbb + ccc
workArray(3, 3) = ccc + aaa
workArray(4, 1) = 1
workArray(4, 2) = 2
workArray(4, 3) = 3
makeArray1 = workArray()
End Function
Это функция 2:
Function findValue1(aaa As Double, bbb As Double, ccc As Double) As Double
Dim Value As Double
Dim result() As Double
result = makeArray1(aaa, bbb, ccc)
Value = result(1, 3) + result(4, 3)
findValue1 = Value
End Function
Это функция 3:
Function valueLoop(aaa As Double, bbb As Double) As Double
Dim seed As Double
Dim importantValue As Double
seed = 1#
Do While seed < 100#
importantValue = findValue1(aaa, bbb, seed)
seed = seed + 1#
Loop
valueLoop = importantValue
End Function
Я ожидаю, что цикл будет работать до seed = 100
.Тогда результат valueLoop
или importantValue
должен быть равен 102.
Я получаю сообщение об ошибке: #VALUE!
в ячейке с описанием: «Значение, используемое в формуле, является неверными даннымитипа».