gpt4 book ai didi

vba - 检测 VBA 中是否选择了表单控件选项按钮

转载 作者:行者123 更新时间:2023-12-02 09:28:54 24 4
gpt4 key购买 nike

我有一个使用 ActiveX 选项按钮可以正常工作的代码。但是,我希望宏也能在 Mac 上运行,因此我尝试用表单控件替换 ActiveX 控件。使用 ActiveX,为了检查是否选择了两个选项按钮之一,我所要做的就是:

    Sub OptionButton1_Click
If OptionButton1.Value = true then
(action...)
End if
End sub

我一直在尝试在 Google 上寻找表单控件的等效项,但每次我都会得到:

Object required error

非常感谢@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的属性(property)。最好将其分配到声明为 OptionButton 的变量中,以启动 Intellisense

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或子例程,当它被选择时执行。因此,您只需要设置一个子例程来识别单击了哪个按钮,然后为其执行相应的操作。

例如,您有 2 Form 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。

关于vba - 检测 VBA 中是否选择了表单控件选项按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30657944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com