Nz 函數

您可以使用 Nz 函數,在 Variant 為 Null 時傳回零、零長度字串 (" ") 或其他指定值。 例如,您可以使用這個函數將 Null 值轉換為其他值,並阻止其透過運算式傳播。

語法

Nz ( variant [, valueifnull ] )

Nz 函數語法具有下列引數:

引數

描述

variant

必要。Variant 資料類型的變數。

valueifnull

選用 (除非在查詢中使用)。若 variant 引數為 Null 時,提供要傳回值的 Variant。這個引數可讓您傳回零或零長度字串以外的值。

附註: 如果在查詢中使用運算式中的 Nz 函數,而不使用 valueifnull 引數,結果會是包含 Null 值之欄位中的零長度字串。


如果 variant 引數的值為 NullNz 函數會傳回數字零或零長度字串 (在查詢運算式中使用時一律傳回零長度字串),視內容指出值應為數字或字串而定。 如果包括選用的 valueifnull 引數,且 variant 引數為 Null,則 Nz 函數會傳回該引數所指定的值。 在查詢運算式中使用時,Nz 函數應一律包含 valueifnull 引數。

如果 variant 的值不是 NullNz 函數會傳回 variant 的值。

註解

Nz 函數適用於可能包括 Null 值的運算式。 若要強制將運算式評估為非 Null 值 (即使包含 Null 值),您可以使用 Nz 函數傳回零、零長度字串或自訂傳回值。

例如,當 Variant varXNull 時,運算式 2 + 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 提供值,當 VariantNull 時將會傳回該值。 包括此選用引數,可以避免使用包含 IIf 函數的運算式。 例如,若 varFreight 的值為 Null,下列運算式會使用 IIf 函數來傳回字串。

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

在下一個範例,如果 varFreightNull,提供給 Nz 函數的選用引數會提供要傳回的字串。

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

範例

附註: 下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 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
擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×