【问题标题】:VBA 2013 equivalent of IsNothingVBA 2013 相当于 IsNothing
【发布时间】:2014-04-17 13:09:17
【问题描述】:

我目前正在调试一个最初用 VBA 2005 编写的数据库应用程序,该应用程序不适用于 VBA 2010 及更高版本。 (许多)问题之一是它使用函数 IsNothing 来测试对象变量是否附加了对象。此功能似乎已在 2010 年和 2013 年弃用。在 VBA 2013 中是否有与此功能等效的功能?

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    正如其他人所指出的,IsNothing 从来都不是 VBA 函数,很可能是作为Is Nothing 的语法糖编写的。

    VB has an IsNothing function 用于相同目的。根据我的经验,定义反映熟悉的 VB 函数的 VBA 函数是很常见的。

    这里有一个VBA IsNothing implementation from Tek-Tips,它应该是您所需要的——要么让IsNothing 调用按原样工作......要么提供一个基础,用等效代码内联它们并去除语法糖:

    '**********************************************************
    '* Function: Returns true if argument evaluates to nothing
    '* 1. IsNothing(Nothing) -> True
    '* 2. IsNothing(NonObjectVariableOrLiteral) -> False
    '* 3. IsNothing(ObjectVariable) -> True if instantiated, 
    '*                                 otherwise False
    '**********************************************************
    Public Function IsNothing(pvarToTest As Variant) As Boolean
        On Error Resume Next
        IsNothing = (pvarToTest Is Nothing)
        Err.Clear
        On Error GoTo 0
    End Function 'IsNothing
    

    公平地说,请注意,这基本上是 @HansUp 已经建议的内容,只是从其他地方获取的 - 并且以最佳猜测您正在调试的代码可能如何得到它的方式开头。

    【讨论】:

    • 虽然当前的主题是 Microsoft Access,但值得注意的是,本材料适用于所有托管 VBA 的 Microsoft Office 应用程序,包括 Excel、Outlook、PowerPoint、Visio 和 Word,不适用于提到少数其他托管 VBA 的应用程序。 (想到 Corel Draw。)
    【解决方案2】:

    Access VBA 不包含IsNothing 函数。如果你过去有一个,那是一个自定义函数。

    如果您无法追踪旧版本,您可以创建一个新版本。

    Public Function IsNothing(ByRef pObject As Variant) As Boolean
        IsNothing = (pObject Is Nothing)
    End Function
    

    【讨论】:

    • 我想你的意思是“...不包括IsNothing 函数”?
    【解决方案3】:

    怎么样

    Dim x as Object
    
    If x is Nothing then
    

    【讨论】:

      【解决方案4】:

      IsNothing 本身从来就不是 VBA 函数...

      If obj Is Nothing Then...
      

      可能对您有用,但可能不会产生与您期望的 IsNothing 函数相同的结果。根据您要确定的内容,您可能需要编写更具体的检查代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-10
        • 1970-01-01
        • 1970-01-01
        • 2013-07-18
        • 2019-05-29
        • 2011-05-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多