我已经通过复制粘贴(从另一本工作簿中)在excel工作表中插入了大量的表单控件按钮(带有文本““)。
这些按钮连接到此宏(位于PERSONAL.XLSB中):
Option Explicit
Sub ChangeSomething()
' The button which called the macro.
Dim b As Button
Set b = activeSheet.Buttons(Application.Caller)
' Do run the code if the button was not already active.
If b.Text <> "x" Then ' SEEMS TO BE THE PROBLEM
' Do something
' Mark the button as activated.
b.Text = "x"
b.Font.Bold = True
' If the button was already activated,deactivate it.
Else
'Mark the button as deactivated.
b.Text = " "
End If
End Sub
此设置之前可以正常工作。但是自复制以来,我得到Runtime Error 1004
“无法设置Button类的Text属性” 。
处理后,异常似乎为Error 438
“对象不支持此属性或方法” 。
调试标志着这一行:
If b.Text <> "x" Then
让我感到困惑的是,获取text属性似乎会引发运行时错误,但设置该值就可以了:
b.Text = "x"
已更改正确工作簿的正确工作表中的正确按钮。
一旦我手动将按钮的文本更改为除“”之外的其他内容,该宏似乎也可以正常工作。
不幸的是,插入的按钮似乎没有包含在activeSheet.Buttons
返回的列表中,因此我无法遍历它们来更改其值。
我不确定是否合适,但是我已经上载了here示例文件。