您可以构造一个字符串,然后将它传递给Eval函数,就好像该字符串就是实际的表达式一样。Eval函数将计算字符串表达式并返回其值。例如, Eval("1 + 1")返回 2。
如果传递给Eval函数一个包含函数名称字符串,则Eval函数返回函数的返回值。例如, Eval("Chr$(65)")返回"的 A"。
注释
|
如果您的函数的名称传递给Eval函数,您必须在stringexpr参数中的函数名后用括号。例如:
|
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
VBA
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))
您不能使用 SQL 运算符之间...和或在直接在您的代码,但您可以使用它们中传递给Eval函数的表达式。
下面的示例确定订单窗体上的货主地区控件的值是否为一个几个指定的州缩写名称。如果该字段包含一个缩写词, intState将真(?1)。注意,您可以使用单引号 (') 将字符串包含在另一个字符串。
VBA
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")