当 Variant 为 Null 时,可以使用 Nz 函数返回零、 零长度字符串 (") 或另一 个指定 值。 例如,可以使用此函数将 Null 值转换为另一个值,并防止它通过表达式传播。

语法

Nz ( variant [valueifnull ] )

Nz 函数的语法有以下参数:

参数

说明

Variant

必需。 可变的数据类型变量

valueifnull

可选(除非用于查询中)。 如果变量参数为,提供值的变量将被返回。 此参数允许您返回非零值或零长度的字符串。

注意: 如果在查询表达式中使用 Nz 函数而不使用 valueifnull 参数,那么在包含空值的字段中结果将是零长度字符串。

如果变量参数的值为Null,则 Nz函数返回数字零或零长度字符串 (在查询表达式) 中使用的字符串始终返回零长度字符串,具体取决于上下文指示值应为数字还是字符串。 如果包含可选 valueifnull参数,则如果变量参数为Null,则 Nz函数将返回该参数指定的值。 在查询表达式中使用时 ,NZ 函数应始终包含 valueifnull 参数,

如果 variant 的值 不是Null,Nz 函数返回变量 的值

备注

Nz函数适用于可能包含Null值的表达式。 若要强制表达式计算结果为非Null 值,即使它包含 Null 值,请使用 Nz 函数返回零、零长度字符串或自定义返回值。

例如,如果 Variant 2 + varXNull,则表达式varX 返回 Null 。 但是, 2 + Nz(varX) 返回 2。

通常可以使用 Nz 函数作为 IIf 函数的替代方法。 例如,在下面的代码中,需要两个表达式(包括 IIf 函数)来返回所需结果。 第一个表达式(包括 IIf 函数)用于检查变量的值,如果为 Null,则将其转换为零。

varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")

在下面的示例中 ,Nz 函数提供的功能与第一个表达式相同,所需结果是通过一个步骤而不是两个步骤实现的。

varResult = IIf(Nz(varFreight) > 50, "High", "Low")

如果为可选参数 valueifnull提供值,则当 variant 为 Null 时 返回 该值。 通过包含此可选参数,可以避免使用包含 IIf 函数的表达式。 例如,如果值为Null,则以下表达式使用IIfvarFreight 返回字符串。

varResult = IIf(IsNull(varFreight), _
"No Freight Charge", varFreight)

下一个示例中,提供给 Nz 函数的可选参数提供在参数为 Null varFreight 返回 的字符串

varResult = Nz(varFreight, "No Freight Charge")

查询示例

表达式

结果

SELECT ProductID, NZ (Discount,"无详细信息可用") AS Expr2 FROM ProductSales;

返回 Expr1 列中的"ProductID",计算"Discount"字段中的"Null"值,并返回所有 Null 值的"无可用详细信息" (返回非 null 值() )。

SELECT ProductID, NZ (Discount,"无详细信息可用") AS ReplaceNull FROM ProductSales;

返回列 Product 中的"ProductID",计算字段"Discount"中的"Null"值,并返回所有 Null 值的"无可用详细信息" (返回非 null 值,如) 一样显示在 ReplaceNull 列中。

VBA 示例

注意: 以下示例演示了在 VBA Visual Basic for Applications (模块) 函数。 有关使用 VBA 的信息,请在"搜索"旁边的下拉列表中选择"开发人员参考",在搜索框中输入一个或多个术语。

以下示例评估窗体上的控件,并基于该控件的值返回两个字符串中的一个。 如果控件值为 Null,则过程使用 Nz 函数将 Null 值转换为零长度字符串。

Public Sub CheckValue()
Dim frm As Form
Dim ctl As Control
Dim varResult As Variant
' Return Form object variable
' pointing to Orders form.
Set frm = Forms!Orders
' Return Control object variable
' pointing to ShipRegion.
Set ctl = frm!ShipRegion
' Choose result based on value of control.
varResult = IIf(Nz(ctl.Value) = vbNullString, _
"No value.", "Value is " & ctl.Value & ".")
' Display result.
MsgBox varResult, vbExclamation
End Sub

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×