在VBA中处理空单元格以进行访问

时间:2016-07-08 15:03:51

标签: vba ms-access

我有以下代码,它应该遍历一个字段数组并创建两个新数组以添加到新记录集:

For Each Field In SDSRecordsets(i)
    Debug.Print (j)
    Debug.Print (Field.Value)
    fieldNames(j) = Field.Name
    If Field.Value = Null Then
        values(j) = ""
    Else
        values(j) = Field.Value
    End If
    j = j + 1
Next

第一次运行此循环时,Debug.Print行打印出0,然后打印出第一个单元格中的字符串值。然后它会毫无问题地贯穿其余部分。第二次,它尝试添加一个空单元格。第一个Debug.Print打印出1,它应该打印出来,第二个打印出Null,也按照应有的方式打印出来。但是,我在这行上得到了一个编译错误:

values(j) = Field.Value

任何人都可以解释为什么它会到达这一行,因为我看到它的方式,If语句必须将Null = Null评估为false才会发生这种情况。

我也尝试过这样做:

If Not IsEmpty(Field.Value) Then

但这也不起作用。

1 个答案:

答案 0 :(得分:1)

使用Nz功能:

For Each Field In SDSRecordsets(i)
    Debug.Print (j)
    Debug.Print (Field.Value)
    fieldNames(j) = Field.Name
    values(j) = nz(Field.Value,"")
    j = j + 1
Next

此外,您可以使用isnull([expr])功能,与null的直接比较将无效