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发挥作用?

提前谢谢。

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

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

=更新:当我尝试在Eval:中显式命名函数时

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

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

=更新:工作:

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

对我来说,重复引用的规则很奇怪。但这并不能解决我的问题。

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

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

最新更新