Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > VB for Application > Как найти имя элемента управления формы?


Автор: ^D^ima 14.05.18, 15:02
В Excel 2010 на лист добавил CheckBox, но неясно как найти его имя чтобы программно к нему обращаться.

Автор: alex77755 25.05.18, 05:24
Какой чекбокс?
если из ActiveX, то в поле имён видно имя
______________.png (, : 455)

Автор: ^D^ima 25.05.18, 06:13
А в чем отличие "Элементы управления формы" и Элементы ActiveX? Что использовать?
ex1.png (, : 458)
?

Автор: Akina 25.05.18, 12:33
^D^ima
Первое - через объектную библиотеку Excel, встроенные, второе - напрямую.
См. например, вот это.
Первые - гарантированно имеются на любой рабочей станции, где установлен Excel, но дубовые, часть пропертей, методов и эвентов может отсутствовать.
Вторые - гибче, но приходится контролировать их существование (и порой версию) при переносе на другую станцию.

Автор: ^D^ima 25.05.18, 13:18
Как достучаться до пропертей тогда, проверить на cheked например? Почему нет элемента в списке? Нет ни Флфжек1 ни CheckBox1 :wacko:
vba.png (, : 447)

Автор: Akina 25.05.18, 14:28
Цитата ^D^ima @
Как достучаться до пропертей тогда, проверить на cheked например?

Как обычно, нажать F2 в редакторе VBA и посмотреть свойства и методы нужного объекта из нужной библиотеки.
Но если Intellisecnce после точки в списке доступных не показывает нужное свойство или метод - то его у объекта и нет.

Автор: alex77755 25.05.18, 15:45
Цитата
Почему нет элемента в списке?

значит ты используешь формы
к ним обращаться и проверять свойства сложней
через shapes( имя_шара).object.object. - как-то так
лучше ИМХО ActiveX использрвать

Добавлено
Цитата
после точки в списке доступных не показывает нужное свойство или метод

а вот это совсем не факт! После точки ексел показывает намного меньше свойств чем не показывает!

Добавлено
к форме обращение так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     t = Лист1.Shapes("Флажок 1").OLEFormat.Object.Value

если флаг установлен = 1
иначе = -4146

Автор: ^D^ima 25.05.18, 17:01
Цитата alex77755 @
ИМХО ActiveX использрвать

А как к объектам ActiveX обращаться?

Автор: alex77755 26.05.18, 04:07
Просто по имени
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     t = Лист1.CheckBox1.Value

Значения соответственно True и Fakse

Автор: pashulka 02.06.18, 19:52
^D^ima, К родному флажку (тому, что на скриншоте) обращаться несложно :

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Dim ck As CheckBox
    Set ck = Лист1.CheckBoxes(1) 'ActiveSheet.CheckBoxes("Флажок 1")
    t = ck.Value


P.S. Можно, разумеется, обойтись и без переменной, но так нагляднее :)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)