2012-01-25 82 views
2

请帮忙。评估范围在Access VBA

=不起作用:

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 

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

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

如何使变体1工作?

在此先感谢。

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

= UPDATE: 我得到错误的数量“不工作“部分是2425.”找不到函数的名称。“ (或在第二种情况下“无法找到表达式的名称”)。对不起我的英语不好。

= UPDATE: 当我尝试明确命名的评估和演示功能:

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 

的双引号,因为对我来说很奇怪的规则。但是这并不能解决我的问题。

+1

请展开“不起作用”。 –

+0

我真的不知道如何。这就是我的全部。 –

+2

你有错误信息吗? k = 2?你的电脑着火吗? *“不起作用”是什么意思?* –

回答

5

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

+0

是的,你是对的。谢谢。问题得到解答。 –

1

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