excel用户表单选项按钮返回真/假而不是名称

excel用户表单选项按钮返回真/假而不是名称,excel,vba,radio-button,userform,Excel,Vba,Radio Button,Userform,我有一个处理所得税的项目,它有一个带有选项按钮的用户表单。设置为最多创建2条记录。我正在验证选项按钮选择是否正确,即一条记录上的“已婚共同申报”必须与另一条记录上的相同。验证还有其他几种变体。验证函数是userform中的ControlValidate 在Save button click事件中,我正在检查哪个选项按钮设置为True,然后运行ControlValidate进行场景测试。这是给我的密码 Dim FilingStatus As String Dim CheckFor

我有一个处理所得税的项目,它有一个带有选项按钮的用户表单。设置为最多创建2条记录。我正在验证选项按钮选择是否正确,即一条记录上的“已婚共同申报”必须与另一条记录上的相同。验证还有其他几种变体。验证函数是userform中的
ControlValidate

在Save button click事件中,我正在检查哪个选项按钮设置为True,然后运行
ControlValidate
进行场景测试。这是给我的密码

    Dim FilingStatus As String
    Dim CheckFor As String
    Dim CurrentControl As Control
    Dim ValidateTaxFiling  As Boolean

        CheckFor = FilingStatus
        With Me.Controls
            ValidateTaxFiling = True
            If Me.obHH = True Then
                FilingStatus = Me.obHH.Caption
                Set CurrentControl = Me.obHH 'option button
                CheckFor = CurrentControl.Name
                Cancel = Not ControlValidate(CheckFor, CurrentControl, ValidateTaxFiling)
                [...a few Elseifs....]
            End If
        End With

我的问题是,行
Set CurrentControl=Me.obHH
返回
Me.obHH
的Boulen值。我需要将控件名传递给valdiation函数。我尝试过的任何选择都不能让我达到目的
Me.obHH.Name
给了我一个类型不匹配(可以理解)。可以假定,如果我可以得到选项的名称,我可以在循环中而不是在嵌套的if/elseifs中执行此操作。有什么想法吗?非常感谢您的帮助。

这可能与@CDP1802有关。我查看了此链接。是,他的代码返回控件名。但是我的代码中已经有了
检查中的
。问题是
ControlValidate
有几个case语句,我在更新事件之前验证文本框中的输入。当函数在文本框上工作时,我总是假设CurrentControl传递的是对象,而不是值。但是当我通过一个文本框评估时,我注意到它也在传递值。我错误地认为选项按钮是独一无二的。链接中的循环是一个好主意,可以节省许多代码行。谢谢。为了进一步解释,如果文本框验证失败,我会让它突出显示文本框(CurrentControl)。鉴于CurrentControl返回一个值,我不确定它是如何工作的。但现在我学到了一些东西。@westing
value
对于该对象可能是可选的,因此当您将对象指定给变量时,您可以看到该值,即使它实际上是一个对象。使用
TypeName(Me.obHH)
来证明它。由于
CheckFor
CurrentControl
的一个属性,因此实际上只需将
CurrentControl
传递给函数即可。