在文本框上使用if语句

时间:2014-07-16 09:51:31

标签: excel vba excel-vba

我正在制作用户输入表格,他们必须输入一些数字。我希望他们只输入2.4到6之间的数字。我该怎么做?

目前我的代码是:

Private Sub txtHeight_Change()
    HeightNumber = CStr(Val(Me.txtHeight.Value))

If HeightNumber >= 2.4 And HeightNumber <= 6 Then
    Else
        MsgBox ("You have entered an incorrect number")
End If

totcost = painttype + undercost + HeightNumber
        TotalCost.Value = totcost
End 

提前致谢。

2 个答案:

答案 0 :(得分:1)

不完全确定这是否可以解决问题,但变量HeightNumber已转换为字符串(CStr)。这会使您If语句(<=>=)中的运算符无效,因为它们不能与String变量一起使用。

答案 1 :(得分:0)

  

引用ImClarky

为什么不简单地转换为数字字符串的两倍并执行检查?

由于CDbl,空字符串将始终触发错误(特别是因为宏可以解释字符串中的每个更改)。您可以使用On Error Goto Sub的结尾对其进行错误处理,或者您只需检查字符串是否为&#34;&#34;。在这种情况下,不要执行Sub。

让我们说txtHeight是一个文本框

Private Sub txtHeight_Change()

If Not Me.txtHeight = "" Then  

    If CDbl(Me.txtHeight) >= 2.4 And CDbl(Me.txtHeight) <= 6 Then
        ' Put your code here, I think those following belong here too
        totcost = painttype + undercost + CDbl(Me.txtHeight)
        TotalCost.Value = totcost
    Else
        MsgBox ("You have entered an incorrect number")
    End If

End If    

End Sub

(这未经测试)