Я создал библиотеку классов VB.NET 2008, которая по большей части отлично работает с VBA. Я могу выполнить большую часть функциональности, которая требуется, но я недавно столкнулся с довольно серьезной проблемой.Массивы: Определены в .NET, применяются в VBA
Причина, по которой мы работаем с обоими интерфейсами программирования, заключается в том, что мы должны иметь возможность делать «на лету» кодирование, и это может быть выполнено только в VBA. Итак, как я уже упоминал, в .NET есть «базовый» код. Код .NET содержит массивы, поля, свойства и т. Д. (Типичная структура программы). Моя проблема в массивах.
Хорошо, в .NET DLL У меня есть массив - назовем его X() как Double. Есть два свойства, поскольку VBA не поддерживает перегрузку. Один из них: X (rowNum) как Double, а другой: X() как Double(). Обратите внимание, что первое свойство возвращает только один элемент массива, а последний возвращает весь массив.
В моей программе VBA я могу прочитать файл и заполнить этот массив значениями (это все в DLL). Однако я не могу манипулировать этими же значениями один раз внутри VBA.
Например, в VBA я не могу сказать X (5) = 10. Он не изменит значение. Когда я пытаюсь настроить весь массив X() на другой, я получаю сообщение об ошибке компиляции: функция или интерфейс, помеченные как ограниченные, или функция использует тип автоматизации, не поддерживаемый в Visual Basic.