По косвенной информации, которую нашел в сети, показалась очень полезнойА можно ссылку на косвенную информацию...) Функция в VBA определена как Function Enum() As Unknown, справки по ней нет, при вызове не возвращает значения, в сети сведений о ней не нашел...
По косвенной информации, которую нашел в сети, показалась очень полезнойА можно ссылку на косвенную информацию...) Функция в VBA определена как Function Enum() As Unknown, справки по ней нет, при вызове не возвращает значения, в сети сведений о ней не нашел...
One the nice improvements in the VB.NET language is the ability to test a value for validity and to get the enum element name corresponding to a value. Unfortunately, this is not possible in VBA.
Ну и напоследок из приведенной ссылки:ЦитироватьOne the nice improvements in the VB.NET language is the ability to test a value for validity and to get the enum element name corresponding to a value. Unfortunately, this is not possible in VBA.
И "невозможно" имеется ввиду проверка значений, а не означает отсутствие функции Enum как таковой?1) Это не функция, это тип данных (такой же как Integer, Long, String и т.д.)
Метод Enum есть не только у коллекции Controls, но и у Pages и TabsЭто касательно Inventor или VBA вообще? В VBA я такого не нашел, а в Inventor это может (не знаю, т.к. с Inventor не работаю) означать функцию, которая позволяет "перечислить" (т.е. пройтись по всем элементам).
1) Это не функция, это тип данных (такой же как Integer, Long, String и т.д.)Я терминами не очень подкован, но в объектном браузере enum обозначается таким же значком, как и все выполняемые операторы (полагаю функции и методы), тогда как в нижней части написано:
Это касательно Inventor или VBA вообще?Ну меня интересует использование в рамках инвентора. Сейчас залез в VBA экселя, там классы controls, tabs и Pages имеют такую функцию
"Function Enum() As UnknownControls - это класс коллекции элементов (управления) на форме: https://msdn.microsoft.com/en-us/library/office/ff845021%28v=office.15%29.aspx
Member of MSForms.Controls"
Насколько я понимаю (а я не знаток VBA) Controls.Enum, как и методы Enum в других коллекциях нужны только для поддержки синтаксиса:Если я понял правильно идею, то Вы считаете, что Enum нужен для перебора коллекции. Но вот в соседнем топике мы сегодня использовали в коде перебор:
Я пришел к такому выводу по косвенным данным. Во всяком случае скрытая функция _NewEnum используется именно для этого:Теперь все понятно, спасибо за ссылку, Александр. _NewEnum присутствует в объекте Controls: см. скрин.
Если написать просто Me.Controls.Enum, то код выполняется и без ошибок, но ничего не делает (и не должен)...Я не проверял, возможно он возвращает или "нумератор", или текущий указатель на объект коллекции...
Я не проверял, возможно он возвращает или "нумератор", или текущий указатель на объект коллекции...Функция возвращает тип объекта как <Unsupported object type> (на скрине видно). Думаю, наверное поэтому и описания ее нет...)
но я правильно же понял, что ответ на вопрос найден?Зависит от того, что считать ответом. ;) В любом случае этим методом воспользоваться напрямую не получится. Да и непонятно зачем он Вам понадобился...
Я на него случайно наткнулся, когда лазил по объектному браузеру - решил тщательно ознакомиться со свойствами и методами класса ControlsКстати, очень полезное занятие. Далеко не все вещи документированы. Не знаю насколько это касается Inventor, но AutoCAD это касается на 100%. В AutoCAD есть функции, которые вроде бы для внутреннего потребления, недокументированные. Но они есть уже больше десятка лет и часто альтернативы им нет - в своё время их нашли и пользуемся. Так что "копание" одобряю. И еще. Если это возможно я бы рекомендовал перейти на .NET (желательно на C#, но в крайнем случае можно и VB.NET).