Excel VBA设置RadioButton GroupNames

时间:2015-06-30 18:25:45

标签: vba excel-vba excel

我正在创建一个测验。它适用于我所拥有的部分,但有点冗长。我正在使用的RadioButtons在“属性”窗口的开头设置。我有一个"重置"我用来清除测验的CommandButton。

 '  Question Block 1
 '  THIS method does work
 ActiveSheet.OptionButton1.Enabled = True
 ActiveSheet.OptionButton2.Enabled = True
 ActiveSheet.OptionButton3.Enabled = True
 ActiveSheet.OptionButton4.Enabled = True
 ActiveSheet.OptionButton1.Value = False
 ActiveSheet.OptionButton2.Value = False
 ActiveSheet.OptionButton3.Value = False
 ActiveSheet.OptionButton4.Value = False

 '  Question Block 1 (Alternate Method)
 '  THIS method does NOT work
 ActiveSheet.OptionButton1.GroupName = "Q1"
 ActiveSheet.OptionButton2.GroupName = "Q1"
 ActiveSheet.OptionButton3.GroupName = "Q1"
 ActiveSheet.OptionButton4.GroupName = "Q1"
 ActiveSheet.OptionButton.GroupName("Q1").Enabled = True
 ActiveSheet.OptionButton.GroupName("Q1").Value = False

第一个代码块工作正常。第二个没有。尝试以这种方式将RadioButtons分配给组时,我做错了什么?我尝试了很多方法,大多数都以错误消息结束,说明对象不支持此属性或方法,方法或成员未找到,对象需要和打开等。抓我的头。 --Edited我没有在UserForm中使用它。 RadioButtons只放在Excel工作表上。

1 个答案:

答案 0 :(得分:0)

找到一个似乎对我的目的非常有用的答案。我希望通过GroupNames属性来做这件事,但只要它有效,有很多方法可以解决任何问题。希望其他人可以从这段代码中受益。

' Defines OptionButtons as Objects
Dim OptBtn As OLEObject

'  Re-Enables RadioButtons
For Each OptBtn In Sheet1.OLEObjects
    If TypeName(OptBtn.Object) = "OptionButton" Then
        OptBtn.Object.Enabled = True
    End If
Next

'  Resets RadioButtons to False (removes the dot)
For Each OptBtn In Sheet1.OLEObjects
    If TypeName(OptBtn.Object) = "OptionButton" Then
        OptBtn.Object.Value = False
    End If
Next