VBA评估>和<操作员错误

时间:2016-05-04 08:13:26

标签: vba operator-keyword

我有以下简单的代码,vba评估不正确(imho),即使在广泛搜索网页后我也无法弄明白:

ElseIf TextBoxSNo.Value < 1 Then
    MsgBox ("Please choose existing S.No")
    Exit Sub
ElseIf TextBoxSNo.Value > Cells(LastRow, 1).Value Then
    MsgBox ("Please choose existing S.No")
    Exit Sub

此代码会限制可以输入Excel用户表单的值。当用户输入小于1或高于Cells(LastRow,1)的值时,它可以正常工作.Value。

但是,当我输入有效值时,它还会显示错误消息。怎么会这样?我甚至通过在MsgBox中打印它们以及错误消息来检查代码评估的值。看起来vba似乎将5> 100评估为真,并打印出错误消息。

编辑:如果我只保留第一个ElseIf语句,它会按预期工作。只有当我添加第二个ElseIf时,它才会错误地进行评估。 LastRow定义为整数,因此我将数字与数字进行比较

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

一个提示 - 在任何表达式上使用Val()函数,以确保您将数字与数字进行比较。如果无法转换表达式,Val()将返回0 - 这有时也很有用。

答案 1 :(得分:-1)

好的,所以我使用了val()函数,它可以工作。谢谢你的提示!

val(Cells(LastRow,1).Value)

我真的不明白为什么我需要这个