Access VBA中的Eval范围

时间:2012-01-25 02:04:29

标签: ms-access vba eval

请帮忙。

=不起作用:

Function f()
    f = 1
End Function

Private Sub Button1_Click()
    k = Eval("f()")
End Sub

=不起作用:

Private Sub Button1_Click()
    с=1
    k = Eval("с")
End Sub

=做好工作:

Function f()
    f = 1
End Function

Private Sub Button1_Click()
    k = f()
End Sub

=在帮助中: 以下示例假定您有一系列50个函数,定义为A1,A2等。此示例使用Eval函数调用系列中的每个函数。

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

如何使变体1工作?

提前致谢。

++++++++++++++++++++++++++++

= UPDATE: 我通过“不工作”部分得到的错误数是2425.“找不到该函数的名称。” (或“在第二种情况下找不到表达式的名称。”)。抱歉我的英文。

= UPDATE: 当我尝试在Eval中明确命名函数时:

 k = Eval("[Forms]![Form1].f()")

我收到错误31005 - “Access无法计算表达式,因为存在对”f“的引用。我开始怀疑Access禁止在Eval中使用用户定义的函数和变量。虽然帮助表明相反。

= UPDATE: 做的工作:

    Function f()
        f = 1
    End Function

    Private Sub Button1_Click()
        k = Eval("val(""551" & "9" & "6"")")
    End Sub

对于我来说,非常奇怪的双引号规则。但这并不能解决我的问题。

2 个答案:

答案 0 :(得分:5)

Eval函数无法访问Form模块中的函数。将函数放在普通的Module

答案 1 :(得分:1)

有一个有趣的事实。 Eval()不接受用户变量作为参数,但接受表单控件数据。