2013-12-02 4 views
0

У меня есть кнопка со стрелкой на моем листе (не в пользовательской форме), и мне нужно установить минимальное и максимальное значения в VBA. Легко, правда? Я пробовал worksheetName.Shapes("shapeName").Min = x, но получаю ошибку времени выполнения 438: объект не поддерживает это свойство или метод.Установите Min/Max кнопки управления формой кнопки с VBA

Я использовал запись макросов Excel и изменил мин и макс кнопки спины, и он записал следующее:

ActiveSheet.Shapes("shapeName").Select 
With Selection 
    .Min = x 
    .Max = y 
End With 

Как это, что если я выбираю форму, я могу затем доступ к его свойствам, но если я напрямую ссылаюсь на форму, я не могу получить доступ к тем же свойствам? Для меня это не имеет смысла. Очевидно, я хотел бы избежать выбора формы и ссылки на «выбор», поскольку это, как правило, не самая лучшая практика.

ответ

2

Вы можете использовать Shape.ControlFormat свойства:

Sub test() 

Dim shp As Excel.Shape 
Set shp = ActiveSheet.Shapes("Spinner 1") 
With shp.ControlFormat 
    .Min = 2 
    .Max = 33 
End With 
End Sub 
+0

+1 Я думал, что это где-то там где-то :) –

+0

@DavidZemens, спасибо, да, я всегда должен ткнуться, прежде чем я запомню это. –

1

Этот ответ будет полезным, хотя и не особенно интуитивным ...

Excel-VBA: Getting the values from Form Controls

Как уже говорилось в комментариях выше, это свойственно. SpinButton является членом коллекции Shapes рабочего листа, но он не позволяет вам напрямую обращаться к этим свойствам как к форме (см. Ответ Дуга о том, как сделать это другим способом, который, вероятно, лучше).

Try:

With ActiveSheet.Spinners("spinbutton1") 
    .Min = x 
    .Max = y 
End With 

Кроме того, вы можете delcare переменного и итерация, если у вас есть несколько элементов управления, как это:

Dim spinbtn as Spinner 'or As Variant 
For each spinbtn in ActiveSheet.Spinners 
    spinbtn.Min = x 
    spinbtn.Max = y 
Next 

Etc.

Смежные вопросы