Eval 函数

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

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函数返回Variant 类型是一个字符串或数值的类型。

参数stringexpr必须是存储在字符串表达式。如果传递给Eval函数不包含数值表达式或函数名称的字符串,而只是简单文本字符串,则会出现运行时错误 。例如, Eval("Smith")会导致错误。

您可以使用Eval函数来确定控件的属性中存储的值。下面的示例传递给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函数。

下一个示例确定订单窗体上的发货地区控件的值是几个指定的状态缩写之一。如果字段包含一个缩写, intStateTrue (-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

下一个示例触发单击事件,就像用户已经单击窗体上的按钮。如果按钮的OnClick属性的值以等号 (=) 开头,函数将表示它函数、 Eval的名称调用函数,它相当于触发单击事件。如果值不以等号开头,那么它必须指定宏的名称。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

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

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

此信息是否有帮助?

谢谢您的反馈!

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

×