Выходной вектор VBA, возвращающий 0 - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь немного освежить свои навыки VBA, и я застрял в массивах.У меня есть очень простой код ниже, который принимает несколько чисел в векторе, умножает на два и возвращает числа.Но клетки все 0?В местных населенных пунктах вычисления правильны, и TestVector заполнен правильно, так в чем же проблема?

Function test(Vec)
    n = Vec.Rows.Count
    Dim TestVector
    ReDim TestVector(n, 1)

    For i = 1 To n
        A = Vec(i) * 2
        TestVector(i, 1) = A
    Next i

    test = TestVector
End Function

1 Ответ

0 голосов
/ 24 февраля 2019

Массивы VBA по умолчанию основаны на 0.Это можно переопределить, используя Option Base 1 в верхней части модуля, но это обычно не одобряется программистами VBA.Вместо этого: просто объявите нижние границы:

ReDim TestVector(1 To n, 1 To 1)

Тогда ваш код будет работать так, как задумано.

Даже если Option Base 1, вероятно, не очень хорошая идея, использование Option Explicit чрезвычайноотличная идея.Это сэкономит вам много времени на отладку.Вы можете сделать это раз и навсегда, включив Require Variable Declarations в опциях редактора VBA.

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