excel - 如何检查选项按钮是否被选中

标签 excel vba radio-button

我希望能够在代码中检查是否选择了特定的选项按钮。

我在 Excel 工作表中制作了几个表单控制按钮,并尝试了如下操作:

if Activesheet.myButton = true then

     (do stuff)

endif

但我收到“对象不支持此属性或方法”错误。

使用 ActiveX 选项按钮会更好吗?

最佳答案

默认情况下,VBA 隐藏了对使用工作表上的表单控件所需的类型的轻松访问。

在 VBA 编辑器中,按“F2”功能键或从“ View ”菜单 ->“对象浏览器”。这将打开对象浏览器窗口。如果在 Excel 库中搜索“OptionButton”,您将找不到任何可用于给定任务的内容。

Object Browser - Normal

但是,如果您右键单击“库窗口”并单击“显示隐藏成员”,您将获得可以使用的完整类(class)列表。一旦您启用了“隐藏成员”,VBA 的 Intellisense 也会向您显示这些类。

Object Browser with hidden Members Shown

表单控件作为形状添加到工作表中,但形状对象本身没有任何允许您查看选项按钮是否被选中的属性。您可以通过“OLEFormat.Object”属性访问OptionButton,但此时它只是一个“Object”类型。 但是,您可以将该对象转换为 Excel.OptionButton,如以下代码所示。您会注意到,我在“OptionButton”前面加上了“Excel”命名空间(库)名称。通过这样做,只要您键入“.”,智能感知就会启动。并为您提供可供选择的类(class)列表。 OptionButton 类公开一个“Value”属性,允许您检查它是否已选中(Value = 1)或未选中(Value = 0)。

Dim ws As Excel.Worksheet
Set ws = ActiveWorkbook.Worksheets.Item("Sheet2")

Dim btn As Shape
Set btn = ws.Shapes.Item("Option Button 1")
Dim optBtn1 As Excel.OptionButton
Set optBtn1 = Sheet2.Shapes.Item("Option Button 1").OLEFormat.Object

If optBtn1.Value = 1 Then ' it is checked
   Debug.Print "Option Button 1 is checked"
End If

现在这一切都完成了,但是现在您可以访问隐藏成员,您还可以访问 WorkSheet 对象上存在的 OptionButtons 集合,并且可以跳过将其作为形状对象进行访问的过程。

Dim ws As Excel.Worksheet
Set ws = ActiveWorkbook.Worksheets.Item("Sheet2")

Dim optBtn2 As Excel.OptionButton
Set optBtn2 = ws.OptionButtons.Item("Option Button 2")
If optBtn2.Value = 1 Then ' it is checked
   Debug.Print "Option Button 2 is checked"
End If

关于excel - 如何检查选项按钮是否被选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30904178/

相关文章:

vba - Excel vba : copy values in a range to another workbook using R1C1 formula

excel - SQL Server 中的日期时间字段在 Excel 中显示不正确

javascript - 如何确定在具有多个按钮组的Form中选择了哪个Radio Button?

java - 如何使 ToggleButton 看起来像 RadioButton 而不改变其行为?

javascript - 在 Chrome 中选择特定单选按钮的脚本

python - 如何将多个excel表转换为csv python

excel - RExcel有用吗?或者我应该寻找替代方案

excel - VBA Countif 大写

vba - Excel VBA : Variable as First Row of Selection?

matlab - 如何使用Excel VBA通​​过matlab在Excel中制作页眉和页脚