Access VBA中的Eval范围

Con*_*Kon 2 ms-access vba eval

请帮忙.

=不起作用:

Function f()
    f = 1
End Function

Private Sub Button1_Click()
    k = Eval("f()")
End Sub
Run Code Online (Sandbox Code Playgroud)

=不起作用:

Private Sub Button1_Click()
    ?=1
    k = Eval("?")
End Sub
Run Code Online (Sandbox Code Playgroud)

=做的工作:

Function f()
    f = 1
End Function

Private Sub Button1_Click()
    k = f()
End Sub
Run Code Online (Sandbox Code Playgroud)

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

Sub CallSeries()
    Dim intI As Integer
    For intI = 1 To 50
        Eval("A" & intI & "()")
    Next intI
End Sub 
Run Code Online (Sandbox Code Playgroud)

如何使变体1工作?

提前致谢.

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

=更新:我在"不工作"部分得到的错误数是2425."找不到该函数的名称." (或"在第二种情况下找不到表达式的名称.").对不起我的英语不好.

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

 k = Eval("[Forms]![Form1].f()")
Run Code Online (Sandbox Code Playgroud)

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

=更新:工作:

    Function f()
        f = 1
    End Function

    Private Sub Button1_Click()
        k = Eval("val(""551" & "9" & "6"")")
    End Sub
Run Code Online (Sandbox Code Playgroud)

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

Oli*_*bes 5

Eval功能无法访问Form模块中的功能.将功能放在普通的Module.