我有一个简单的任务给我带来很多麻烦。
我需要的是简单地将变量从我的VBA宏移动到一个函数,以便能够在Access Query中使用它。
ADDED:我用简单的VBA创建了一个小而简单的访问文档。下载地址: http://sharesend.com/olpy1o7d
如果有人可以下载并看到我做错了什么,我真的更喜欢它。
在f_main
形式中,我需要能够将counter
更改为任意数字,因此在主窗体中按下按钮时会获得更新的查询。
如下所述,但下载可能更容易解释我的情况。
编辑:
Public counter as Integer
Private Sub Command_Click()
counter = 1
End Sub
在一个模块中:
Public Function n()
n = counter
End Function
在访问中,我有一个SQL查询:
SELECT t_Data.ID, n() AS Expr1 FROM t_Data;
Access说它无法找到函数n()
如果我使用函数构建器,我可以看到n(),所以我猜这是因为函数n()为空 - 它找不到" counter"以我的形式宣布。
我该怎么办?
答案 0 :(得分:3)
为了帮助像我这样的未来的无赖,我发现了错误。
我将模块命名为与函数相同,这导致了问题。
通过将模块名称从n
更改为m_n
,并保留函数名称n()
,它完全正常。
愚蠢的错误是愚蠢的。但是,谢谢那些调查我的问题的人。
答案 1 :(得分:2)
在表单中将变量声明为public似乎实际上并未使其全局公开。这让我在Access中多次烦恼。将您的计数器声明移动到您的模块代码,您应该看到操作的变化。
在以下SO帖子(Public variables are not REALLY public in VBA in Forms)中对此行为进行了很好的讨论。