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

您可以使用 Eval 函數來評估會產生文字字串或數值的 運算式 。

您可以建構字串,然後將它傳遞到 Eval 函數,就好像該字串是實際的表達式一樣。 Eval 函數會評估 字串運算式 並傳回其值。 例如, Eval("1 + 1") 傳回 2。

如果您傳遞給 Eval 函數一個包含函數名稱的字串, Eval 函數會傳回函數的傳回值。 例如, Eval("Chr$(65)") 會傳回 “A”。

語法

Eval ( stringexpr )

stringexpr 自變數 是評估為英數位元文字字串的表達式。 例如, stringexpr 可以是傳回字串或數值的函數。 也可以是窗體上 控制項 的參照。 stringexpr 自變數必須評估為字串或數值;它無法評估為 Microsoft Access 物件。

附註: 下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。

附註: 如果您要將函數的名稱傳遞給 Eval 函數,則必須在 stringexpr 自變數中包含函數名稱之後的括弧。 例如:

' ShowNames is user-defined function.Debug.Print Eval("ShowNames()")   

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

註解

您可以在表單或報表上的 計算控制項 或宏或模組中使用 Eval 函數。 Eval 函數會傳回不是字串或數值類型的 Variant。

自變數 字串必須 是儲存在字串中的表達式。 如果您將不含數值表達式或函數名稱但只包含簡單文字字串的字串傳遞給 Eval 函數,則會發生 執行階段錯誤 。 例如, Eval("Smith") 會造成錯誤。

您可以使用 Eval 函數來判斷儲存在控制項 Value 屬性中的值。 下列範例會傳遞包含 Eval 函數之控件完整參照的字串。 然後在對話框中顯示控制件的目前值。

Dim ctl As ControlDim strCtl As StringSet ctl = Forms!Employees!LastNamestrCtl = "Forms!Employees!LastName"MsgBox ("The current value of " & ctl.Name & _    " is " & Eval(strCtl))

您可以使用 Eval 函數來存取 Visual Basic for Applications (VBA) 模組中無法正常使用的表達式運算符。 例如,您無法使用 SQL 運算子 Between...且直接 在您的程式代碼中使用,但您可以在傳遞至 Eval 函數的運算式中使用它們。

下一個範例會判斷 Orders 窗體上的 ShipRegion 控件值是否為數個指定狀態縮寫之一。 如果欄位包含其中一個縮寫, intState 會是 True (-1) 。 請注意,您 ( ) 使用單引號來包含另一個字串中的字串。

Dim intState As IntegerintState = Eval("Forms!Orders!ShipRegion In " _    & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

查詢範例

Expression

結果​​

SELECT Eval (“15+3”) AS Expr1 FROM ProductSales GROUP BY Eval (“15+3”) ;

評估字串值並計算結果。 結果:18。

SELECT Eval (“Date () +month (date () ) ”) AS NewDate FROM ProductSales Group by Eval (“Date () +month (date () ) ”) ;

評估字串值、識別函數並執行函數。 結果:目前系統日期 + 目前月份,顯示在 「NewDate」 欄中。

VBA 範例

下列範例假設您有定義為 A1、A2 等的 50 個函數系列。 此範例使用 Eval 函數來呼叫數列中的每個函數。

Sub CallSeries()    Dim intI As Integer    For intI = 1 To 50        Eval("A" & intI & "()")    Next intIEnd Sub

下一個範例會觸發 Click 事件,就好像使用者已按兩下窗體上的按鈕一樣。 如果按鈕的 OnClick 屬性的值開頭為等號 (=) ,表示它是函數的名稱, 則 Eval 函數會呼叫函數,這相當於觸發 Click 事件。 如果值不是以等號開頭,則該值必須命名宏。 DoCmd 物件的 RunMacro 方法會執行具名的宏。

Dim ctl As ControlDim varTemp As VariantSet ctl = Forms!Contacts!HelpButtonIf (Left(ctl.OnClick, 1) = "=") Then    varTemp = Eval(Mid(ctl.OnClick,2))Else    DoCmd.RunMacro ctl.OnClickEnd If

Need more help?

Want more options?

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

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