可以使用 Eval 函数计算结果 表达式 字符串或数值的值。

可以构造一个字符串,然后将它传递给 Eval 函数,就像字符串是实际表达式一样。 Eval函数计算 字符串表达式 并返回其值。 例如, Eval("1 + 1") 返回 2。

如果将包含函数名称的字符串传递给 Eval 函数, 则 Eval 函数返回函数的返回值。 例如, Eval("Chr$(65)") 返回"A"。

语法

Eval ( stringexpr )

stringexpr 参数是计算结果为字母数字文本字符串的表达式。 例如 ,stringexpr 可以是返回字符串或数值的函数。 或者,它可以是窗体上 控件 引用。 stringexpr参数必须计算为字符串或数值;无法计算为 Microsoft Access 对象 。

注意: 以下示例演示了在 VBA Visual Basic for Applications (模块) 函数。 有关使用 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 函数访问在 VBA 模块中通常Visual Basic for Applications (的) 运算符。 例如,不能将以下运算符SQL Between...或者直接在代码中使用 In,但可以在传递给Eval函数的表达式中使用它们。

下一个示例确定"订单"窗体上 ShipRegion 控件的值是否是多个指定州缩写之一。 如果字段包含其中一个缩写,则 intStateTrue (-1) 。 请注意,使用单引号 () 字符串包含在另一个字符串中。

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

查询示例

表达式

结果

SELECT Eval ("15+3") AS Expr1 FROM ProductSales GROUP BY Eval ("15+3") ;

计算字符串值并计算结果。 结果:18。

SELECT Eval ("Date () +month (date () ) ") AS NewDate FROM ProductSales Group by Eval ("Date () +month (date () ) ") ;

计算字符串值,标识函数并执行它们。 结果:当前系统日期 + 当前月份,显示在"NewDate"列中。

VBA 示例

以下示例假定你有一系列定义为 A1、A2 等的 50 个函数。 此示例使用 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

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×