将 VBA 变量传递给访问查询条件

Passing VBA variable to Access Query Criteria

我有一个简单的任务给我带来了很多麻烦。

我需要的是简单地将一个变量从我的 VBA 宏移动到一个函数,以便能够在访问查询中使用它。

添加:我创建了一个小而简单的访问文档,带有简单的 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"。

我能做什么?

在表单中将变量声明为 public 似乎并没有真正使它全局化 public。这让我在 Access 中烦恼了很多次。将计数器声明移至模块代码,您应该会看到操作发生变化。

在下面的 SO post (Public variables are not REALLY public in VBA in Forms) 中对此行为进行了很好的讨论。

为了帮助像我这样的未来无赖,我发现了这个错误。

我将模块命名为与函数相同的名称,这导致了问题。

通过将模块名称从 n 更改为 m_n,并保留函数名称 n(),它工作得非常好。

愚蠢的错误是愚蠢的。但是谢谢你们调查我的问题。