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