Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

用Eval方法计算数字文本或数值

时 间:2016-09-21 08:14:42
作 者:微软   ID:21115  城市:上海
摘 要:可以使用Eval函数可以计算结果为文本字符串或数值的表达式。
正 文:

语法

表达式.Eval(StringExpr)

表达式 一个代表 Application 对象的变量。

参数

名称

必需/可选

数据类型

说明

StringExpr

必需

String

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

返回值

Variant

注解

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

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

注释 注释

如果您的函数的名称传递给Eval函数,您必须在stringexpr参数中的函数名后用括号。例如:

VBA
' ShowNames is user-defined function. 
Debug.Print Eval("ShowNames()") 
VBA
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
VBA
Debug.Print Eval("Date()")

您可以在窗体或报表,或在宏或模块中的计算控件中使用Eval函数。Eval函数将返回一个variant 类型的值是一个字符串或数值类型。

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

可以使用Eval函数来确定存储在控件的Value属性的值。下面的示例将传递一个包含Eval函数对控件的完整引用的字符串。然后在对话框中显示该控件的当前值。

VBA
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))
您不能使用 SQL 运算符之间...和直接在您的代码,但您可以使用它们中传递给Eval函数的表达式。

下面的示例确定订单窗体上的货主地区控件的值是否为一个几个指定的州缩写名称。如果该字段包含一个缩写词, intState(?1)。注意,您可以使用单引号 (') 将字符串包含在另一个字符串。

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

示例

下面的示例假定您有一系列的 50 函数定义为 A1、 A2,等等。本示例使用Eval函数来调用该系列中的每个函数。

VBA
Sub CallSeries() 
 
 Dim intI As Integer 
 
 For intI = 1 To 50 
 Eval("A" & intI & "()") 
 Next intI 
 
End Sub

下一个示例会触发 Click 事件好像用户已经单击窗体上的按钮。如果按钮的OnClick属性值开头表明,一个等号 (=),其 s 函数的名称,则Eval函数调用函数,相当于触发Click事件。如果值不以等号打头,那么它必须指定宏的名称。DoCmd对象的方法将运行已命名的宏。

VBA
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软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助