Невозможно передать UDT между модулями в разных проектах. - PullRequest
0 голосов
/ 06 марта 2019

Я считаю, что то, что я собираюсь спросить, является ограничением, но я надеюсь, что найдется удовлетворительное решение.

Я работаю с несколькими файлами / книгами и намереваюсь сохранить код, связанный сданных как можно больше.Поэтому я хочу иметь возможность связывать одну процедуру с другой в разных проектах.

Я хотел бы иметь возможность передавать свои аргументы в определяемом пользователем типе при компоновке, но возникла следующая ошибка компилятора:

Только пользовательские типы, определенные в общедоступных объектных модулях, могут быть приведены к или из варианта или переданы функциям с поздней привязкой

Я обнаружил, что яЭта проблема возникает только тогда, когда я использую Application.Run , а не когда я выполняю оператор Call .Однако я не мог заставить Звонить для работы в разных проектах.Последующее чтение, кажется, подтверждает это.(Я читал, что Application.Run не передает ByRef , и также очевидно, что UDT могут проходить только ByRef ).Похоже, я застрял.Вот пример кода, иллюстрирующий точку

Option Explicit

Public Type type1
  s As String
End Type

Public Sub main()

Dim t As type1

Application.Run "Book2!Freda", t

End Sub

Application.Run "Book2! Freda", t , где возникает ошибка компилятора

...