我试图做这样的事情
sub test()
a=inputbox("value1:")
b=inputbox("value2:")
c=inputbox("value3:")
if a<b and a>c then
msgbox(a)
else
msgbox(b)
msgbox(c)
end if
end sub
当我输入5的值,10的b的值和2的c的值时,条件应该返回TRUE,然后显示带有a的消息框,但它返回FALSE并显示带有b和c的消息框。我认为解决方案非常简单,但我无法弄清楚。
非常感谢
答案 0 :(得分:3)
您的InputBox返回的字符串看起来像数字,并且"5"
不小于"10"
。请执行以下操作之一:
Dim a as long, b as long, c as long
a=clng(inputbox("value1:"))
或if int(a)<int(b) and int(a)>int(c) then
。答案 1 :(得分:2)
发生这种情况是因为VBA将您的输入视为字符串。只需将CInt()或CLng()添加到变量即可,以使Excel知道它们是数字。
Sub test()
a = CInt(InputBox("value1:"))
b = CInt(InputBox("value2:"))
c = CInt(InputBox("value3:"))
If a < b And a > c Then
MsgBox (a)
Else
MsgBox (b)
MsgBox (c)
End If
End Sub
答案 2 :(得分:1)
另外两个答案非常好,我将最终采用吉普车的显式变量声明方法(Dim a as long, b as long, c as long
)。
尽管我从不建议不声明变量-您已经找到了为什么这样做总是好习惯的艰难方法-您也可以将输入框简单地乘以1。
这是使用乘幂将字符串强制为数字值的另一种技巧(这是工作表公式中使用的类似技巧,该公式使用双负--()
将值转换为数字)。
a = InputBox("value1:") * 1
b = InputBox("value2:") * 1
c = InputBox("value3:") * 1
If a < b And a > c Then
MsgBox (a)
Else
MsgBox (b)
MsgBox (c)
End If