在Excel userform中从组中返回选定的radiobutton

时间:2017-01-03 11:49:10

标签: excel vba radio-button userform groupname

我有一个Excel用户表单,其中有许多无线电(选项)按钮组合在一起。

是否可以引用单选按钮的GroupName来识别哪一个已被选中?

我尝试了me.myGroup,但Excel无法识别它。

如果可能的话,我想写一些像;

myVar = me.mygroup

这可以在Excel 2013中使用吗?

3 个答案:

答案 0 :(得分:1)

如果您在选项按钮上设置了GroupName属性,请执行以下操作:

enter image description here

然后,您可以在控件的循环中引用该属性,以查看控件的TypeNameOptionButton并且GroupName是匹配的:

Option Explicit

Private Sub CommandButton2_Click()
    Dim opt As MSforms.OptionButton

    Set opt = GetSelectedOptionByGroupName("MyGroup")

    If Not opt Is Nothing Then
        MsgBox opt.Name
    Else
        MsgBox "No option selected"
    End If

End Sub

Function GetSelectedOptionByGroupName(strGroupName As String) As MSforms.OptionButton

    Dim ctrl As Control
    Dim opt As MSforms.OptionButton

    'initialise
    Set ctrl = Nothing
    Set GetSelectedOptionByGroupName = Nothing

    'loop controls looking for option button that is
    'both true and part of input GroupName
    For Each ctrl In Me.Controls
        If TypeName(ctrl) = "OptionButton" Then
            If ctrl.GroupName = strGroupName Then 
                Set opt = ctrl
                If opt.Value Then
                    Set GetSelectedOptionByGroupName = opt
                    Exit For
                End If
            End If
        End If
    Next ctrl

End Function

答案 1 :(得分:0)

这可以让你走上正轨。循环控制并检查它们是否被选中(如果是单选按钮,则为TRUE

Private Sub CommandButton1_Click()
    For Each Control In UserForm1.Controls
        If Control.Value = True Then
            MsgBox Control.Name
            'MsgBox Control.Tag
        End If
    Next Control
End Sub

答案 2 :(得分:0)

Morning Pete,

您需要为变量指定一个特定值,以确定单击了哪个按钮。

尝试类似

的内容
Private Sub OptionButton1_Click()

myVar = 1

End Sub

使用特定值。您可以通过双击用户窗体编辑器中的单选按钮自动访问此子例程。这样,稍后在您的代码中,您可以引用myVar来确定您的脚本接下来应采取的操作,例如

If myVar = 1 Then
....
ElseIf myVar = 2 Then
....
End If

如果不了解您的代码尝试做什么,我无法真正提供更具体的建议。

希望有所帮助!