Eval 函數

您可以使用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函數會傳回字串或數數值型別的變數。

引數stringexpr必須是儲存在字串中的運算式。 如果您傳遞給Eval函數的字串不包含數值運算式或函數名稱, 只是簡單的文字字串, 則會發生 執行階段錯誤 。 例如, Eval("Smith") 會產生錯誤。

您可以使用Eval函數來判斷儲存在控制項value屬性中的值。 下列範例會將包含控制項完整參照的字串傳遞給Eval函數。 接著, 它會在對話方塊中顯示控制項的目前值。

Dim ctl As Control
Dim strCtl As String
Set ctl = Forms!Employees!LastName
strCtl = "Forms!Employees!LastName"
MsgBox ("The current value of " & ctl.Name & _
" is " & Eval(strCtl))

您可以使用Eval函數來存取在 Visual Basic for APPLICATIONS (VBA) 模組中通常無法使用的 expression 運算子。 例如, 您無法使用 Between 之間的 SQL 運算子.。。或者直接在您的程式碼中, 但您可以在傳遞給Eval函數的運算式中使用它們。

下一個範例會判斷 [訂單] 表單上的 [貨主] 控制項的值是否為幾個指定狀態縮寫中的一個。 如果欄位包含其中一個縮寫, intState 會是True (– 1)。 請注意, 您使用單引號 (') 將字串包含在另一個字串中。

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

查詢範例

運算式

結果

從 ProductSales 群組 ("15 + 3") 選取 [Eval ("15 + 3]) 做為運算式1。

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

選取 [Eval] ("Date () + month (date ())") 作為從 ProductSales 群組中的 NewDate [Eval ("Date () + month (date ())");

評估字串值、識別函數並執行它們。 結果: 顯示在欄 "NewDate" 中的 [目前系統日期 + 本月]。

VBA 範例

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

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

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

Dim ctl As Control
Dim varTemp As Variant
Set ctl = Forms!Contacts!HelpButton
If (Left(ctl.OnClick, 1) = "=") Then
varTemp = Eval(Mid(ctl.OnClick,2))
Else
DoCmd.RunMacro ctl.OnClick
End If

附註:  本頁面是經由自動翻譯而成,因此文中可能有文法錯誤或不準確之處。 讓這些內容對您有所幫助是我們的目的。 告訴我們這項資訊是否有幫助? 這裡是供您參考的英文文章

增進您的 Office 技巧
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

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

×