Неверный тип данных при зацикливании функции массива в VBA для Excel - PullRequest
0 голосов
/ 05 июля 2019

У меня есть функция в 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! в ячейке с описанием: «Значение, используемое в формуле, является неверными даннымитипа».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...