【问题标题】:VBA Not IsNullVBA 不是 IsNull
【发布时间】:2010-10-16 16:48:59
【问题描述】:

在 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 max 和 qty

【问题讨论】:

  • 啊,看来我的问题来自其他地方。

标签: vba ms-access conditional


【解决方案1】:

您可能对 VB6/VBA null/nothing/empty 上的这篇文章感兴趣:

http://blogs.msdn.com/ericlippert/archive/2003/09/30/53120.aspx

【讨论】:

    【解决方案2】:

    如果 mrf 是 Variant,那么它最初是 Empty,而不是 Null。因此,您必须使用IsEmpty() 函数。

    【讨论】:

    • 另一种选择是将 mrf 初始化为 null。我注意到他没有声明他的任何变量(min、max、mrf),这通常是个坏主意。开启“Option Explicit”,就可以避免很多这样的逻辑错误。
    【解决方案3】:

    我的猜测是 mrf 不为空,即使它是空的或其他东西。它也可能是 Nothing,这与 VBA 领域中的 null 不同(我认为)。尝试在调试器中运行代码并查看 mrf 的值。根据 mrf 是什么,您可以进行不同的测试(例如检查 len(mrf) 与否 isNothing(mrf) 或者如果它是一个整数,并且它的 init 为零,那么 mrf 0 .... 你明白了. 希望有帮助!

    【讨论】:

      【解决方案4】:

      不,Not IsNull 运行良好。

      请记住,IsNull 是一个函数,如果传递给它的参数为 null,则返回 TRUE,否则返回 false。

      您的“If Not IsNull(mrf) Then”语句翻译成英文为“If mrf is not null then”

      这意味着当 mrf 有一个值时,那么你正在处理 if 语句中的代码。如果您希望在 mrf 为空时触发内部代码,那么您需要从语句中删除 NOT

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-29
        • 1970-01-01
        • 2012-09-26
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        • 1970-01-01
        相关资源
        最近更新 更多