excel用户表单选项按钮返回真/假而不是名称
我有一个处理所得税的项目,它有一个带有选项按钮的用户表单。设置为最多创建2条记录。我正在验证选项按钮选择是否正确,即一条记录上的“已婚共同申报”必须与另一条记录上的相同。验证还有其他几种变体。验证函数是userform中的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
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返回一个值,我不确定它是如何工作的。但现在我学到了一些东西。@westingvalue
对于该对象可能是可选的,因此当您将对象指定给变量时,您可以看到该值,即使它实际上是一个对象。使用TypeName(Me.obHH)
来证明它。由于CheckFor
是CurrentControl
的一个属性,因此实际上只需将CurrentControl
传递给函数即可。