请记住,在使用选项按钮时,您的选项按钮需要共享相同的 GroupName。
您的控件名称仅供您参考以进行更改/阅读。
您的Caption是出现在用户表单上的字符串。
您的GroupName是一个字符串,它允许 Excel 识别链接在一起的选项按钮。
因此,如果 opt1 的 GroupName 为“1”而 opt2 的 GroupName 为“2”,那么您将能够选择两者,因为它们位于不同的组中。
Private Sub UserForm_Initialize()
Dim opt1 As Control, opt2 As Control
Set opt1 = UserForm1.Controls.Add("Forms.OptionButton.1", , True)
With opt1
.Name = "radioFoo"
.GroupName = "1"
.Caption = "Option 1"
End With
Set opt2 = UserForm1.Controls.Add("Forms.OptionButton.1", , True)
With opt2
.Name = "radioFoo2"
.GroupName = "1"
.Caption = "Option 2"
.Left = 100
End With
End Sub
编辑:
从看到你编辑的帖子和你的评论......
不,你不需要有 UserForm_Initialize() 方法。
它是一个名为Event的 Excel-VBA 功能。
它的用途是指定用户表单在初始化用户表单(第一次启动)时执行某些操作。
与您的代码类似,Button1_Click() 也是一个事件。
由于您告诉 Excel 在用户单击 Button1 的事件中执行以下操作...
无论如何,让我简要地向您解释一下选项按钮的作用。
一组选项按钮迫使用户从程序给出的选项中只选择一个选项。
VBA 中的选项按钮只允许您创建一个选项。因此,如果要创建 2 个选项,则必须创建 2 个选项按钮。
但是只有一个问题:如果您想创建 2 组选项按钮,以便用户可以选择 2 个单独的选项,该怎么办?例如,食物和饮料?
VBA 为我们提供了一个名为GroupName的选项按钮的属性。GroupName 允许 VBA 区分不同的选项按钮组。
因此,在您创建的每个选项按钮中,必须初始化其 GroupName 值。如果您看到任何没有 GroupName 的选项按钮的实现,那么您就是在玩火。
所以,让我们最后看看你的代码:
Sub Button1_Click()
' Some operatin is done here to get the list of values in lResult
Dim rad1 As Control, rad2 As Control
Set rad1 = UserForm1.Controls.Add("Forms.OptionButton.1", "radioFoo1", True)
rad1.Caption = "bar"
rad1.Left = 10
rad1.Width = 10
rad1.Top = 10
rad1.GroupName = "Group1"
Set rad2 = UserForm1.Controls.Add("Forms.OptionButton.1", "radioFoo2", True)
rad2.Caption = "foo"
rad2.Left = 10
rad2.Width = 10
rad2.Top = 50
rad2.GroupName = "Group1"
End Sub
只有一件事:
- 正如我之前暗示的那样,只有一个选项的选项按钮没有任何意义。如果您正在寻找开/关功能,您不妨选择复选框。
因此,我创建了另一个选项按钮,将其定义为与您创建的第一个选项按钮 (rad1) 位于同一组中。
希望能帮助到你。
干杯,
kpark
当问题/问题得到解答/解决时,请务必选择最佳答案。谢谢。