全部显示

Eval 方法

       

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

expression.Eval(StringExpr)

expression   必需。返回“Applies To”列表中的一个对象的表达式。

StringExpr  必需 String 型。stringexpr 参数是值为字母数字文本字符串的表达式。例如,stringexpr 可以是返回字符串或数值的函数,也可以是对窗体上控件的引用。stringexpr 参数的值必须是字符串或数值,不能是 Microsoft Access 对象

说明

可以构造一个字符串然后把它传递给 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, 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...AndIn,但是可以在传递给 Eval 函数的表达式中使用它们。

下一个示例用于确定“订单”窗体上“货主地区”控件的值是否为几个特定的州缩写名称中的一个。如果字段中包含其中一个缩写名称,则 intState 的值为 True(-1)。请注意在示例中使用单引号 (') 将字符串包含在另一个字符串中。

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