Null在没有两个DLookup的情况下检查可以为Null的列值?

时间:2018-03-15 10:20:50

标签: vba null

如何从类似于此示例的代码中删除一个DLookup?

Dim sCustomerName as String

If IsNull(DLookup("sName", "tblCustomers", "iCustomerID=12345")) Then
   MsgBox "Customer name is null!"
Else
   sCustomerName = DLookup("sName", "tblCustomers", "iCustomerID=12345")
End If

在VBA中,将可以为空(或缺失)的列值读入变量,然后将其与Null进行比较会产生错误。有没有更好的方法来进行这些检查?

显然,如果没有性能损失,那么由于性能受到影响,它的代码也不错。 有吗?

即使没有,它也有重复/复制粘贴的代码。如何重写以避免这种情况?

1 个答案:

答案 0 :(得分:1)

Variant数据类型可以存储Null值。尝试获取值并检查是否为Null。

Dim customerName As Variant
    customerName = DLookup("sName", "tblCustomers", "iCustomerID=12345")

If Not IsNull(customerName) Then
    'do stuff
End If

另一种方法是Nz()函数:

  

当Variant为Null时,您可以使用Nz函数返回零,零长度字符串(“”)或其他指定值。

Dim customerName As String
    customerName = Nz(DLookup("sName", "tblCustomers", "iCustomerID=12345"), vbNullString)

If customerName <> vbNullString Then
    'do stuff
End If