excel - 在 Excel VBA 中, "IsNull()"和 "var = Null"有什么区别?

标签 excel null runtime-error string vba

考虑以下 VBA 函数:

Function getFirstColumn(Optional sheetName As String) As Long
    'In particular the IF statement below.
    If sheetName = "" Or sheetName = Null Then sheetName = ActiveWorkbook.ActiveSheet.Name
    With ActiveWorkbook.Worksheets(sheetName)
        getFirstColumn = .Cells.Find("*", .Cells(1), xlFormulas, xlWhole, xlByColumns, xlNext).Column
        If Err <> 0 Then getFirstColumn = 0
    End With
End Function

使用此功能时,从第二张打开的工作表中使用它时我没有问题。

但是当代码更改为基于函数的等效代码时,'If IsEmpty(sheetName) Or IsNull(sheetName) Then sheetName = ActiveWorkbook.ActiveSheet.Name ,如果我尝试从不拥有它的工作表中使用该功能,我会遇到问题:

Erro em tempo de execução '9':
Subscrito fora do intervalo.



它们之间有什么区别?为什么会准确触发这样的错误?

最佳答案

“sheetName”是一个变量。该变量可能是未定义的,可能是指一个对象......或者可能是 NULL。

如果它是一个对象,则该对象本身可能评估为变量值 NULL。因此,“IsNull()”函数。

其他变体包括“IsEmpty()”(您提到过)、“IsNothing()”甚至“IsMissing()”:

  • http://social.msdn.microsoft.com/Forums/en-US/accessdev/thread/aff30d44-0a7d-435e-8f15-7edd4f7f03d1/
  • http://www.tek-tips.com/faqs.cfm?fid=3710
  • 关于excel - 在 Excel VBA 中, "IsNull()"和 "var = Null"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750839/

    相关文章:

    excel - 如何下载已被 Google 表格打开的 Excel 文件?

    Perl 5.8 级联空检查

    Java 运行 .jar 时出错,但 Eclipse 中没有任何内容

    sql - 使用循环查询 SQL 的最快方法

    java - 如何使用java将工作表添加到现有的大型Excel文件(20MB)?

    sql - 如何计算postgresql中的空值?

    python - Tensorflow、Keras 预训练的 MobileNetV2 模型无法下载

    c++ - 为结构读取 C++ 中的二进制文件的运行时错误

    excel - Mac 上的 Excel 2011 VBA 中的 "=R[-115]C"是什么意思?

    ruby - Splat 在哈希上