我有以下代码,它应该遍历一个字段数组并创建两个新数组以添加到新记录集:
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
但这也不起作用。
答案 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
的直接比较将无效