使用 Eval 函數來評估產生文字字串或數值的運算式。
語法
表達。StringExpr) (評估
expression 代表 Application 物件的變數。
參數
| 名稱 | 必要/選用 | 資料類型 | 描述 |
|---|---|---|---|
| 字串Expr | 必要 | 字串 | 計算為英數字元文字字串的運算式。 例如, stringexpr 可以是傳回字串或數值的函式,也可以是表單上控制項的參考。 stringexpr 引數必須評估為字串或數值;它無法評估為 Microsoft Access 物件。 |
傳回值
Variant
註解
您可以建構一個字串,然後將它傳遞給 Eval 函數,就好像將該字串為實際運算式一般。
Eval 函數會估算字串運算式並傳回其值。 例如, Eval("1 + 1") 傳回 2。
如果您將包含函數名稱的字串傳遞給 Eval 函數,則 Eval 函數會傳回該函數的回傳值。 例如, Eval("Chr$(65)") 傳回 “A”。
當您將函數的名稱傳遞給 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。
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 中通常無法使用的運算式運算子。 例如,您無法在程式碼中直接使用 SQL 運算子 Between...And 或 In,但是可以在傳遞給 Eval 函數的運算式中使用這些運算子。
下一個範例會判斷 Orders 表單中 ShipRegion 控制項的值是否為指定的其中一個州別縮寫。 如果欄位包含其中一個縮寫, intState 則為 True (1) 。 請注意,您應使用單引號 (') 將字串包含於另一個字串中。
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
範例
下面的範例假定您有 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 VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。