2014-02-07 48 views
2

有点麻烦。我有一个简单的情况:2单选按钮,接受或拒绝。我没有做IF语句,而是有义务去做Select语句。选择与单选按钮的案例 - 有空值的问题

当我遍历我的代码时,它会转到Case rdbApprove.Value并且抱怨值为null。我认为这不是真的,因此它应该转到下一个案例。不是 - 它挂在它为空的事实上。

为了试图摆脱空值,我尝试了NZ(rdbApprove.Value,False)来试图告诉它它是错误的,但仍然不起作用。

Select Case True 
    Case rdbApprove.Value 

    Case rdbReject.Value 

    Case Else 
     MsgBox "ERROR!" 

End Select 
+0

你为什么觉得要做Select语句?你的代码看起来有点奇怪 - 通常在Select Case中,选择的值是一个运行时确定的值,可能的选项是常量;你的代码有其他方面的东西。就我个人而言,我只是一个简单的“If”陈述而已。 –

+0

不应该打开或关闭单选按钮,并且不应该只关心批准按钮是否打开?那么,如果说'if(rdbApprove)then blahblah end'if – bf2020

回答

3

通常的做法是将您的单选按钮包含在选项组中。然后你的代码可以引用选项组.Value

我的形式包括2.

我也命名Frame15,其包括其选项值是1的“批准”单选按钮和“拒绝”按钮,其选项值的选项组添加一个命令按钮来检查选项组.Value。这是它的点击事件过程。

Private Sub cmdOptionValue_Click() 
    Dim strPrompt As String 
    Select Case Me.Frame15.value 
    Case 1 
     strPrompt = "approved" 
    Case 2 
     strPrompt = "rejected" 
    Case Else 
     If IsNull(Me.Frame15.value) Then 
      strPrompt = "Null" 
     Else 
      strPrompt = "this should not happen" 
     End If 
    End Select 
    MsgBox strPrompt 
End Sub 
+0

+1,因为你的回答是正确的,但是代表49K +的代表我会期望比“Frame15”更好的东西。来吧,伙计! ; o) –

+0

Woot!你是对的;我不会那样做“真实”。 ;-) – HansUp