使用VBA设置旋转按钮窗体控件的最小值/最大值



我的工作表上有一个旋转按钮(不是用户表单),我需要在VBA中设置最小值和最大值。很简单,对吧?我尝试了worksheetName.Shapes("shapeName").Min = x,但得到运行时错误438:对象不支持此属性或方法。

我使用了Excel的宏记录器,并更改了旋转按钮的最小值和最大值,它记录了以下内容:

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

如果我选择了形状,我可以访问它的属性,但如果我直接引用形状,我就无法访问相同的属性,这是怎么回事?这对我来说没有意义。显然,我希望避免选择形状和引用"选择",因为这通常不是最佳实践。

您可以使用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

这个答案会很有帮助,尽管不是特别直观。。。

Excel VBA:从窗体控件获取值

正如我在上述评论中提到的那样,这是一种奇特的现象。SpinButton是工作表Shapes集合的成员,但它不允许您直接以形状的形式访问这些属性(请参阅Doug的答案,了解如何以另一种可能更好的方式访问这些属性)。

尝试:

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

等等。

您可以简单地尝试以下操作:

Private Sub SpinButton1_SpinDown()
    TextBox3.Text = val(TextBox3.Text) - 1
    If TextBox3.Text < 0 Then TextBox3.Text = 0
End Sub

最新更新