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