VBA: передать имя типа для работы в качестве параметра (Inventor iLogi c) - PullRequest
0 голосов
/ 16 июня 2020

Я хочу создать функцию с проверкой типа.

function MyFunc(ByVal Obj As Object, Typ As Type) As Boolean
  ...
  If TypeOf Obj Is typ Then
  ...
End Function

Для стандартных типов не проблема сравнить строку, возвращаемую TypeName(Obj), как описано здесь: 2010 VBA - Передайте тип как параметр

Но в iLogi c это сложно. Существует основной Тип Document и производные «подтипы» AssemblyDocument, DrawingDocument ...

Каждый из эти подтипы также относятся к типу Document. Для моей цели меня не интересует, что это за подтип документа. Мне нужно проверить только основной тип Document.

Лучше объяснить какой-то код:

Dim Obj As Document
Obj = ThisDoc.Document

Logger.Debug(TypeName(Obj)) ' <-- Returns: AssemblyDocument
Logger.Debug(TypeOf Obj Is Document) ' <-- Returns: True

Logger.Debug(TypeName(ThisDoc.Document)) ' <-- Returns: AssemblyDocument
Logger.Debug(TypeOf ThisDoc.Document Is Document) ' <-- Returns: True

Итак, есть ли способ передать тип функции, или это единственный способ чтобы получить список возможных подтипов и сравнить их элемент за элементом со строковым результатом TypeName(Obj)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...