VBA不是IsNull

时间:2009-03-31 19:16:27

标签: vba ms-access conditional

在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条件。我在这里缺少什么?

4 个答案:

答案 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