使用 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...And 或 In,但是可以在传递给 Eval 函数的表达式中使用它们。
下一个示例用于确定“订单”窗体上“货主地区”控件的值是否为几个特定的州缩写名称中的一个。 如果字段包含其中一个缩写, 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。