我尝试通过Excel中的VBA创建一个旋转按钮,但它给我一个“自动化错误,灾难性故障”?

时间:2019-03-26 01:36:57

标签: excel vba

Sub Test()
    Dim spinButton As Object
    Set spinButton = ActiveSheet.OLEObjects.Add(ClassType:="Forms.SpinButton.1", Link:=False, DisplayAsIcon:=False, Left:=276, Top:=58.5, Width:=12.75, Height:=25.5)
    spinButton.Object.Min = 1
    spinButton.Object.Max = 100
    spinButton.LinkedCell = "B2"
End Sub

我上面的VBA代码的目标是创建一个简单的“旋转按钮”,它将“ B2”单元格的值更改为1。

当我将代码作为宏运行时,它会向我显示此错误警告:

error

其中they write about on the MS website here

问题是,我的代码有效。如图所示,它会在正确的位置创建一个旋转按钮,添加正确的属性,并在单击旋转按钮时更改B2单元格的值。

我正在使用一个完全没有文件的全新文件。没有其他宏/模块和完全空的电子表格。如果有任何区别,我将在“ ThisWorkbook”中使用我的VBA代码:

failure

2 个答案:

答案 0 :(得分:3)

spinButton.Object.Min = 1 
spinButton.Object.Max = 100
spinButton.LinkedCell = "B2"

收到该错误是因为您事先将最小值设置为1,然后链接到没有值的单元格。如果您做相反的事情,那就可以了

spinButton.LinkedCell = "B2"

spinButton.Object.Min = 1
spinButton.Object.Max = 100

答案 1 :(得分:2)

这对我来说有两个小的变化:

  1. 将此代码插入常规模块而不是ThisWorkbook模块中。

  2. 添加一行,将B2的值设置为1,然后再将其链接到旋转按钮(假设这就是您想要的起始值,但是您也可以轻松地将其设置为{ {1}}或两者之间的任何内容。


100