Невозможно передать 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", где происходит ошибка компилятора

0 ответов

Другие вопросы по тегам