Access VBA教程:Eval函数

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

可以构造一个字符串,然后就像是一个真正的表达式一样把字符串传给 Eval函数,。Eval函数将计算字符串表达式并返回计算结果值。例如,Eval("1 + 1") 返回 2。

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

Eval(stringexpr)

stringexpr参数是一个对字母数字文本字符串进行计算的表达式。例如,stringexpr 可以是一个返回字符串或数值的函数,或是对窗体上的控件的引用。stringexpr参数的值必须对字符串或数值进行计算,但不能对Microsoft Access对象进行计算。

注意   如果把函数名传给 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

上页:Access VBA教程:EuroConvert函数 下页:Access VBA教程:GUIDFromString函数

Access VBA教程:Eval函数

Access VBA教程:GUIDFromString函数 Access VBA教程:LoadPicture方法
Access VBA教程:Nz函数 Access VBA教程:StringFromGUID函数
Access VBA教程:隐藏的语言元素 Access VBA教程:在子窗体或子报表中调用过程
Access VBA教程:将 DAO 代码转换为 ADO Access VBA教程:将 Microsoft Access 用作 DDE 服务器
Access VBA教程:错误捕获 Access VBA教程:在域聚合函数中计算字段
Access VBA教程:在 SQL 语句中使用国际日期格式 Access VBA教程:运行时错误处理的元素
Access VBA教程:设置数据访问页和控件属性 Access VBA教程:设置窗体、报表和控件的属性
Access VBA教程:在代码中设置启动属性和选项 Access VBA教程:在 Visual Basic 中设置数据访问页属性
Access VBA教程:在 Visual Basic 中设置窗体、报表和控件属性 Access VBA教程:从 Visual Basic 中设置选项
Access VBA教程:在 Visual Basic 中设置 ActiveX 数据对象的属性 Access VBA教程:在 Visual Basic 中设置数据访问对象的属性
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号