我有一个使用 ActiveX 选项按钮可以正常工作的代码。但是,我希望宏也能在 Mac 上运行,因此我尝试用表单控件替换 ActiveX 控件。使用 ActiveX,为了检查是否选择了两个选项按钮之一,我所要做的就是:
Sub OptionButton1_Click
If OptionButton1.Value = true then
(action...)
End if
End sub
我一直在尝试在 Google 上找到表单控件的等效项,但每次我都会得到:
对象所需错误
非常感谢您的回答@L42 和@Sai Nishank!现在,如果我想检查 OptionButton_Click 是否来自其他组的选项按钮为 true ,该怎么办?我尝试了此语法,但收到错误消息:“编译错误方法或数据未找到”
Sub USDButton_Click()
MsgBox "USD"
If Sheet1.BTUButton = True Then
(action1)
End If
If Sheet1.kWhButton = True Then
(action2)
End If
我不确定 BTUButton 是否是按钮的正确名称,但我不知道在哪里检查,表单控件没有像 ActiveX 那样方便的“右键单击 > 属性”
如果您使用的是Form Control
,你可以获得与ActiveX
通过使用OLEFormat.Object
的财产Shape Object
。最好将其分配到声明为的变量中选项按钮得到智能感知起作用。
Dim opt As OptionButton
With Sheets("Sheet1") ' Try to be always explicit
Set opt = .Shapes("Option Button 1").OLEFormat.Object ' Form Control
Debug.Pring opt.Value ' returns 1 (true) or -4146 (false)
End With
但话又说回来,你真的不需要知道它的价值。
如果你使用Form Control
,你关联一个Macro
或子例程,当它被选择时执行。因此,您只需要设置一个子例程来识别单击了哪个按钮,然后为其执行相应的操作。
例如你有 2Form Control
选项按钮。
Sub CheckOptions()
Select Case Application.Caller
Case "Option Button 1"
' Action for option button 1
Case "Option Button 2"
' Action for option button 2
End Select
End Sub
在上面的代码中,只有一个子例程分配给两个选项按钮。
然后你通过检查来测试哪个调用了子例程Application.Caller
.
这样,无需检查选项按钮值是 true 还是 false。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)