Eval 函数

可以使用Eval函数计算生成文本字符串或数值的 表达式 。

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

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

语法

评估 ( 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) 模块中通常不可用的表达式运算符。 例如, 不能将 SQL 运算符用于.。。或直接在代码中, 但可以在传递到Eval函数的表达式中使用它们。

下一个示例确定 "订单" 窗体上 "货主" 控件的值是否为若干指定状态缩写之一。 如果字段包含其中一个缩写, intState 将为True (– 1)。 请注意, 使用单引号 (') 将字符串包含在另一个字符串中。

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

查询示例

表达式

结果

选择 "Eval" ("15 + 3") 作为 ProductSales GROUP BY Eval 的表达式 1 ("15 + 3");

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

选择 "Eval" ("Date () + month (date ())") 作为 NewDate 从 ProductSales Group by 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

注意:  本页面是自动翻译的,可能包含语法错误或不准确之处。 我们的目的是使此内容能对你有所帮助。 能否告知我们此信息是否有所帮助? 下面是该参考内容的英文版

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×