共用方式為


Application.Eval 方法 (Access)

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

語法

運算式Eval (StringExpr)

expression 代表 Application 物件的變數。

參數

名稱 必要/選用 資料類型 描述
StringExpr 必要 字串 評估為英數位元文字字串的運算式。 例如, 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 支援與意見反應