我的工作表上有一个旋转按钮(不在用户窗体中),我需要在VBA中设置最小值和最大值。容易,对吗?我试过worksheetName.Shapes("shapeName").Min = x
但是我得到了运行时错误438:对象不支持这个属性或方法。
我使用了Excel的宏录制器并更改了旋转按钮的最小值和最大值,并记录了以下内容:
ActiveSheet.Shapes("shapeName").Select
With Selection
.Min = x
.Max = y
End With
如果我选择形状,我可以访问其属性,但如果我直接引用形状,我无法访问相同的属性?这对我来说没有意义。显然,我想避免选择形状并引用“选择”,因为这通常不是最佳实践。
答案 0 :(得分: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
答案 1 :(得分:1)
这个答案会有所帮助,虽然不是特别直观......
Excel-VBA: Getting the values from Form Controls
正如我在上面的评论中提到的那样,它很奇特。 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
等
答案 2 :(得分:0)
您可以尝试以下方法:
Private Sub SpinButton1_SpinDown()
TextBox3.Text = val(TextBox3.Text) - 1
If TextBox3.Text < 0 Then TextBox3.Text = 0
End Sub