Я работаю над программой, которая выполняет вычисления для нескольких физических элементов. Существует около 5 типов элементов, каждый из которых требует различных входных данных (с различными типами данных) для расчетов. Нет ограничений на количество элементов или порядок, в котором они могут быть рассчитаны.
Например: первый набор данных может содержать элемент типа A, элемент типа B и второй элементтип A.
Второй набор данных может иметь элемент типа C, элемент типа B и пять элементов типа A.
Элемент типа A может иметь тип (строка) вход и давление (двойной) вход. Элемент типа B может иметь тип (строковый) ввод, длину (двойное), количество ребер (целое). Элемент типа C может иметь ввод длины (двойной), ввод диаметра (двойной) и ввод количества (целое число)
Поскольку я не знаю количество или тип элементов заранее, я использовалвариантный массив, который имеет количество строк, которые могут быть назначены после того, как элементы выбраны пользователем, и число столбцов, равное максимальному количеству точек данных, необходимых для любого элемента.
Проблема заключается в том, что когда Iзатем попробуйте использовать эти данные в других функциях (вызывая Array (1,2)), я получаю ошибку «несоответствие типов аргументов byref».
Из того, что я могу сказать, это означает, что моя программа не ЗНАЕТ, что значение, содержащееся в слоте моего массива, может / должно быть правильным типом данных. он просто видит «вариант» в противоположность «двойному» или «строке» и выдает ошибку.
Я нашел несколько способов обойти это. 1) Я могу поместить данные в круглые скобки при вызове функции. Очевидно, это вынуждает данные соответствовать ожидаемому типу данных. функция (input1, (Array (1,2)), input3)
2) Я могу перейти ко всем своим функциям и изменить ожидаемые типы данных на вариант.
Проблема в том, что я выполняю инженерные расчеты, и я забочусь о поддержании определенного уровня точности в моих числах. Я также не хочу, чтобы мои функции могли работать, если ввод не имеет смысла. Мне кажется, что вариант 1 несет в себе высокий риск потери важных данных во время принудительного преобразования. Я не уверен, что вариант 2 лучше, так как vba, похоже, не назначает / не отслеживает эти типы данных, как я себе это представлял.
Есть ли лучший способ для меня назначать и передавать данныеразнообразие типов?