如何从类似于此示例的代码中删除一个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进行比较会产生错误。有没有更好的方法来进行这些检查?
显然,如果没有性能损失,那么由于性能受到影响,它的代码也不错。 有吗?
即使没有,它也有重复/复制粘贴的代码。如何重写以避免这种情况?
答案 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