Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

您可以使用 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")

查詢範例

Expression

結果​​

SELECT ProductID, NZ (Discount,“無詳細數據可用”) AS Expr2 FROM ProductSales;

在數據行表達式1 中傳回 「ProductID」,評估字段 「Discount」 中的 [Null] 值,並針對所有 Null 值傳回 [沒有可用的詳細數據], (傳回非 Null 值,) 。

SELECT ProductID, NZ (Discount,“無詳細數據可用”) AS ReplaceNull FROM ProductSales;

在 [產品] 欄中傳回 “ProductID”,評估 「折扣」欄位中的「Null」值,並傳回所有 Null 值的「沒有詳細數據」, (傳回) 的非 Null 值,並顯示在 [ReplaceNull] 欄中。

VBA 範例

附註: 下列範例示範如何在 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, vbExclamationEnd Sub

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。