Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.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 vba.png (, : 447) |
Автор: Akina 25.05.18, 14:28 |
Как обычно, нажать 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 |
А как к объектам 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. Можно, разумеется, обойтись и без переменной, но так нагляднее |