Controls.Enum function

Автор Тема: Controls.Enum function  (Прочитано 14037 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Controls.Enum function
« : 03-02-2015, 13:28:30 »
Доброго времени суток, уважаемые форумчане! При выполнении задачи наткнулся на функцию Controls.Enum , но не разобрался, как ею пользоваться. По косвенной информации, которую нашел в сети, показалась очень полезной, хотя возможно я что-то не так понял :) Поделитесь пожалуйста своим опытом ее использования, если таковой имеется.
В программировании я новичок...но ненадолго! ;)

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Re: Controls.Enum function
« Ответ #1 : 04-02-2015, 13:44:11 »
По косвенной информации, которую нашел в сети, показалась очень полезной
А можно ссылку на косвенную информацию...) Функция в VBA определена как Function Enum() As Unknown, справки по ней нет, при вызове не возвращает значения, в сети сведений о ней не нашел...

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Controls.Enum function
« Ответ #2 : 04-02-2015, 13:55:19 »
По косвенной информации, которую нашел в сети, показалась очень полезной
А можно ссылку на косвенную информацию...) Функция в VBA определена как Function Enum() As Unknown, справки по ней нет, при вызове не возвращает значения, в сети сведений о ней не нашел...

То что нет справки и стало моей основной проблемой :) "Косвенную информацию" я черпал в интернете "убивая время в метро"... к сожалению ссылок не осталось.
П.С. Одна из статей https://msdn.microsoft.com/ru-ru/library/8h84wky1.aspx  ... посчитал, что работать они должны схоже.

UPDATE
http://www.cpearson.com/Excel/Enums.aspx
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Controls.Enum function
« Ответ #3 : 04-02-2015, 15:02:35 »
Enum - это перечисление, особенный тип данных
Controls - это (обычно) элементы управления на форме
Controls.Enum - это что-то совсем не понятное.
Ну и напоследок из приведенной ссылки:
Цитировать
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.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Controls.Enum function
« Ответ #4 : 04-02-2015, 15:17:21 »
Ну и напоследок из приведенной ссылки:
Цитировать
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.

Нууу, если английский меня не подводит, то это переводится как: " Одно из приятных улучшений языка VB.NET- это возможность проверять значение...бла-бла-бла. К сожалению это не возможно для VBA." И "невозможно" имеется ввиду проверка значений, а не означает отсутствие  функции Enum как таковой?

Насчет Controls.Enum ... Метод Enum есть не только у коллекции Controls, но и у Pages и Tabs
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Controls.Enum function
« Ответ #5 : 04-02-2015, 15:21:28 »
И "невозможно" имеется ввиду проверка значений, а не означает отсутствие  функции Enum как таковой?
1) Это не функция, это тип данных (такой же как Integer, Long, String и т.д.)
2) Да. Это означает, что нет прямого приведения целочисленного значения к типу Enum
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Controls.Enum function
« Ответ #6 : 04-02-2015, 15:24:31 »
Метод Enum есть не только у коллекции Controls, но и у Pages и Tabs
Это касательно Inventor или VBA вообще? В VBA я такого не нашел, а в Inventor это может (не знаю, т.к. с Inventor не работаю) означать функцию, которая позволяет "перечислить" (т.е. пройтись по всем элементам).

P.S.: Нашел еще специфическое Inventor'ое: http://adndevblog.typepad.com/manufacturing/2012/07/how-to-use-enumtype-object.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Controls.Enum function
« Ответ #7 : 04-02-2015, 15:39:49 »
1) Это не функция, это тип данных (такой же как Integer, Long, String и т.д.)
Я терминами не очень подкован, но в объектном браузере enum обозначается таким же значком, как и все выполняемые операторы (полагаю функции и методы), тогда как в нижней части написано:
"Function Enum() As Unknown
Member of MSForms.Controls"

Это касательно Inventor или VBA вообще?
Ну меня интересует использование в рамках инвентора. Сейчас залез в VBA экселя, там классы controls, tabs и Pages имеют такую функцию
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Controls.Enum function
« Ответ #8 : 04-02-2015, 16:22:39 »
"Function Enum() As Unknown
Member of MSForms.Controls"
Controls - это класс коллекции элементов (управления) на форме: https://msdn.microsoft.com/en-us/library/office/ff845021%28v=office.15%29.aspx
Насколько я понимаю (а я не знаток VBA) Controls.Enum, как и методы Enum в других коллекциях нужны только для поддержки синтаксиса:

Код - Visual Basic [Выбрать]
  1. Dim xs as Controls ' дальше инициализация xs
  2. '.................
  3. For Each x as Control in xs
  4. '.................
  5. NEXT
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Controls.Enum function
« Ответ #9 : 04-02-2015, 16:35:22 »
Насколько я понимаю (а я не знаток VBA) Controls.Enum, как и методы Enum в других коллекциях нужны только для поддержки синтаксиса:
Если я понял правильно идею, то Вы считаете, что Enum нужен для перебора коллекции. Но вот в соседнем топике мы сегодня использовали в коде перебор:
For Each invVBAProject In ThisApplication.VBAProjects

Тогда было бы логично, что если класс/коллекция (не знаю точно равноправны ли эти термины :) ) ... вобщем если VBAProjects доступен для перебора, то тогда должен содержать функцию Enum ...но не содержит. И в инвенторе и в экселе функцию Enum имеют лишь три  вышеуказанных класса: controls, tabs и pages.
В программировании я новичок...но ненадолго! ;)

Отмечено как Решение R.I.Chernov 05-02-2015, 09:43:59

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Controls.Enum function
« Ответ #10 : 04-02-2015, 17:30:52 »
Я пришел к такому выводу по косвенным данным. Во всяком случае скрытая функция _NewEnum используется именно для этого:
https://msdn.microsoft.com/en-us/library/aa262338%28v=vs.60%29.aspx
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Re: Controls.Enum function
« Ответ #11 : 04-02-2015, 19:21:46 »
Я пришел к такому выводу по косвенным данным. Во всяком случае скрытая функция _NewEnum используется именно для этого:
Теперь все понятно, спасибо за ссылку, Александр. _NewEnum присутствует в объекте Controls: см. скрин.
Если написать просто Me.Controls.Enum, то код выполняется и без ошибок, но ничего не делает (и не должен)...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Controls.Enum function
« Ответ #12 : 04-02-2015, 19:25:24 »
Если написать просто Me.Controls.Enum, то код выполняется и без ошибок, но ничего не делает (и не должен)...
Я не проверял, возможно он возвращает или "нумератор", или текущий указатель на объект коллекции...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Re: Controls.Enum function
« Ответ #13 : 05-02-2015, 06:13:36 »
Я не проверял, возможно он возвращает или "нумератор", или текущий указатель на объект коллекции...
Функция возвращает тип объекта как <Unsupported object type> (на скрине видно). Думаю, наверное поэтому и описания ее нет...)

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Controls.Enum function
« Ответ #14 : 05-02-2015, 09:44:57 »
Моей думалки пока недостаточно, чтобы осознать все, что вы сейчас наобсуждали :) Но я правильно же понял, что ответ на вопрос найден? ;)
В программировании я новичок...но ненадолго! ;)