Невозможно передать UDT между модулями в разных проектах.
Я считаю, что то, что я собираюсь спросить, является ограничением, но я надеюсь, что есть удовлетворительное решение.
Я работаю с несколькими файлами / книгами и намереваюсь максимально сохранить код, связанный с данными. Поэтому я хочу иметь возможность связывать одну процедуру с другой в разных проектах.
Я хотел бы иметь возможность передавать свои аргументы в пользовательском типе при компоновке, но возникла следующая ошибка компилятора:
Только определенные пользователем типы, определенные в открытых объектных модулях, могут быть приведены к варианту или из него или переданы функциям с поздней привязкой.
Я обнаружил, что эта проблема возникает только при использовании Application.Run, а не при выполнении оператора Call. Тем не менее, я не мог заставить 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", где происходит ошибка компилятора