访问:如何查看是否选中了选项单选按钮

时间:2019-04-08 16:49:40

标签: excel vba ms-access button access-vba

我有4个“选项”单选按钮可以检查。如果它们由用户检查,那么我想在表中插入一条记录。代码如下:

If option1Button is Checked then 
     doInsertQuery
If option2Button is Checked then 
     doInsertQuery
If option3Button is Checked then 
     doInsertQuery
If option4Button is Checked then 
     doInsertQuery

我找不到有关如何执行“被检查”方法的任何文档。我来自VB.net背景,而VBA肯定没有我习惯用于这种事情的玩具。

1 个答案:

答案 0 :(得分:3)

您应该获取 Option Group 选项的Value属性,而不是查询每个 Option Button 的状态。 em> 本身,即选项按钮集周围的框架。

这将产生与选定的选项按钮相关联的选项值

由于在一个选项组中只能选择一个选项按钮,因此我建议在测试所选值时使用VBA Select Case语句,例如:

Select Case YourFrameControl
    Case 1: Debug.Print "Option 1 Selected."
    Case 2: Debug.Print "Option 2 Selected."
    Case 3: Debug.Print "Option 3 Selected."
End Select

由于Value属性是控件返回的默认值,因此无需明确声明。


如果“选项按钮”是独立,并且不是是选项组的成员,那么您可以查询选项按钮本身的Value属性,会产生True(-1)或False(0)值,或者True(-1),False(0)或Null三重状态选项按钮。

在这种情况下,我建议使用复选框而不是单选按钮,因为对于允许选择多个选项的界面而言,这会更直观。

由于您声明用户可以选择“所有适用的选项” ,因此您可能需要使用一系列单独的if语句来为每个所选选项评估表达式。

如果仅评估单个表达式,则可以在行中编写if语句:

If YourOptionControl1 Then Debug.Print "Option 1 selected."
If YourOptionControl2 Then Debug.Print "Option 2 selected."
If YourOptionControl3 Then Debug.Print "Option 3 selected."

或者,作为单独的if块:

If YourOptionControl1 Then
    Debug.Print "Option 1 selected."
End If
If YourOptionControl2 Then
    Debug.Print "Option 2 selected."
End If
If YourOptionControl3 Then
    Debug.Print "Option 3 selected."
End If

同样,由于Value属性是控件返回的默认值,因此无需明确声明;对于上述情况,我假设您不是使用三态选项按钮。