Страницы: 1
RSS
Как получить свойство элементов ActiveX из стандартного модуля?, Получить свойста ActiveX из стандартного модуля.
 
Уважаемые форумчане!
Обрабатываю геометрические фигуры на листе. Для задания некоторых параметров использую ChekBox-ы и OptionButton-ы.
Код, естественно, в стандартном модуле. Вопрос, как получить значение свойств, например Value этих элементов activeX в стандартном модуле.
Можно, конечно, создать public переменные и через обработку событий в модуле листа хранить в них, или связать с ячейками и брать из них. Но, может есть прямой способ и хотелось бы пополнить знания. Из стандартного модуля элементы видятся только как shape с соответствующими свойствами или я что-то не понимаю.
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Название темы поменял. А в следующий раз сами давайте более информативное название.
По вопросу: а в чём проблема? Указывается лист, котрол и получайте свойства:
Код
MsgBox ActiveSheet.OptionButton1.Value
 
В модуле листа так работает, а в стандартном модуле выдает ошибку, что такого свойства/метода нет.
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Я проверял именно из стандартного модуля.
 
Прикрепил изображение с ошибкой. Может проблема в переименовании, но в модуле листа работает. obPol был ранее OptionButton1.
Изменено: Joiner - 27.03.2016 20:22:56
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Указывайте лист явно:
Код
MsgBox Sheets("Лист1").OptionButton1.Value
 
Так нельзя обращаться к OoptionButton напрямую с листа из обычных модулей - должно использоваться кодовое имя листа. А в Вашем случае правильно так:
Код
lstP.OLEObjects("OptionButton1").Object.Value
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо. Работает. Не подскажете, где почитать побольше по этой теме. Googl ничего путного не дает.
Изменено: Joiner - 27.03.2016 20:44:14
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
На MSDN есть все. На лету я привык использовать F2 и Intellisense + F1.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
У меня так работает.
Код
Dim sh As Variant
Set sh = ActiveSheet
Set Opt = sh.OptionButton1
v=sh.OptionButton1.value
Изменено: Doober - 28.03.2016 01:16:32
 
Цитата
использую ChekBox-ы и OptionButton-ы.
Какие?
Из форм или ActiveX?
Разные контролы требуют разного обращения.

Код
On Error Resume Next
For Each c In Worksheets("Лист1").Shapes
    Debug.Print "Form2.0", c.Name, c.OLEFormat.Object.Value; "" '1 вариант
    Debug.Print "Form2.0", c.Name, c.DrawingObject.Value; "" '2 вариант
    Debug.Print "ActiveX", c.Name, c.OLEFormat.Object.Object.Value '1 вариант
    Debug.Print "ActiveX", c.Name, c.DrawingObject.Object.Value '2 вариант
Next c
Изменено: Александр Моторин - 28.03.2016 02:37:06
Страницы: 1
Наверх