ВЫ НЕ ХОТИТЕ ДЕЛАТЬ ЭТО.
По умолчанию члены являются злым, неявным и запутанным кодом. Rubberduck аннотации наподобие @DefaultMember
помогают сделать скрытые атрибуты более заметными, но API все еще является странным, нетрадиционным, неидиоматическим кодом VBA.
Элемент по умолчанию, который принимает один параметрдолжен иметь имя Item
, а его параметр - Index
инкапсулированной коллекции - сам класс будет неким пользовательским классом коллекции.
Любое другое использование элемента по умолчанию сводится к злоупотреблению.
См. Современные рекомендации VBA: члены по умолчанию для получения дополнительной информации.
Теперь, когда все прояснено ...
Из-за VB_PredeclaredId = True
атрибут, самый короткий возможный способ вызвать элемент по умолчанию:
?MyMsgBox("test")
Это потому, что MyMsgBox
является одновременно именем класса и именем объекта глобальной области видимостипеременная этого типа класса. Обратите внимание, что если вы не захватываете возвращаемое значение, это «недопустимое использование свойства» .... обратите внимание, что VBA предполагает, что членами по умолчанию являются Property
члены.
Вы получаете параметр quick-информация в IDE для члена по умолчанию с MyMsgBox(
:
Точно почему вызов члена по умолчанию отлично работает на локальном экземпляре (и не по умолчанию) грязно и неясно - вероятно, здесь запутывается VBA, по вполне понятным причинам: это грубое злоупотребление языковыми возможностями.