分享方式:


Application.Eval 方法 (存取)

使用 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...AndIn,但是可以在傳遞給 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 支援與意見反應