在Access中使用一些VBA代码,当满足一组非常特定的条件时,它会弹出一个InputBox,要求输入一个整数。到目前为止一切都很好。
Private Sub Command10_Click()
If Not IsNull(mrf) Then
If min <> max Then
If qty <= min Then
mrf = GetParamValue
End If
End If
End If
End Sub
问题是Not IsNull似乎被忽略了。我希望它要求输入一个值,除非已经存在一个值。只要min&lt;&gt;这就会一直触发InputBox。满足max和qty&lt; = min条件。我在这里缺少什么?
答案 0 :(得分:11)
如果mrf
是变体,那么它最初是Empty
,而不是Null
。因此,您必须使用IsEmpty()
函数。
答案 1 :(得分:4)
不, Not IsNull 工作正常。
请记住, IsNull 是一个函数,如果传递给它的参数为null,则返回TRUE,否则返回false。
你的“如果不是IsNull(mrf)然后”语句翻译成英语为“如果mrf不为null那么”
这意味着当mrf有一个值时,那么你正在处理if语句中的代码。如果您希望在mrf为空时触发内部代码,则需要从语句中删除 NOT 。
答案 2 :(得分:1)
我的猜测是mrf不是null,即使它是空的或其他东西。它也可能是Nothing,这与VBA领域的null不同(我认为)。尝试在调试器中运行代码并查看mrf的值。根据mrf是什么,你可以做一个不同的测试(如检查len(mrf)或不是isNothing(mrf)或者它是一个整数,并且它是init为零,然后是mrf&lt;&gt; 0 ....你得到这个想法。希望有所帮助!
答案 3 :(得分:1)
你可能对VB6 / VBA上的这篇文章感兴趣null / nothing / empty:
http://blogs.msdn.com/ericlippert/archive/2003/09/30/53120.aspx