Access 新手如何运行没有 Sub 的 VBA 代码?

Posted

技术标签:

【中文标题】Access 新手如何运行没有 Sub 的 VBA 代码?【英文标题】:New to Access How to run VBA code that doesn't have Sub? 【发布时间】:2016-12-18 22:49:21 【问题描述】:

您好,我是 Access 的新手,我有一个简短的问题。 我有一个没有“子”的代码。我想知道当我在宏窗口上看不到任何代码时如何执行我的代码? (参考附图)

我的代码从函数和变量声明开始!

这是一个非常直截了当的问题,但如果需要,请在下方评论以获得任何澄清!

【问题讨论】:

你有一个Function,你不能直接启动它,因为它需要参数。编写您自己的启动函数的子程序(不带参数),为其提供正确的参数并处理其结果。 Sub myownsub()你可以在任何地方写子,当然在函数体之外。 @A.S.H 函数不需要参数。函数返回一些东西 (x = FunctionName())。 Sub 不返回任何内容 (SubName)。两者都可能有也可能没有参数(x = FunctionName(Param)SubName Param)。 Subs 的调用不带括号 (SubName)。函数用方括号 (ret = FunctionName()) 调用。您还可以将函数作为不带括号 (FunctionName) 的子函数调用,并且返回被丢弃。 @Noodles OP要启动的函数有(非可选的)参数。 这不是重点。您错误地描述了 sub 和 function 之间的区别。 【参考方案1】:

例如,为了让您能够通过按下按钮来运行功能,您必须:

a) 将函数放在 vba 编辑器中的标准模块中。将代码移至新模块,然后从宏中调用函数。

或者

b) 从事件 vba 子中运行函数,例如单击按钮。

【讨论】:

【参考方案2】:

对于代码模块中的子和函数,您通常可以将光标放在子/函数中并按F5,代码将运行。

上述方法适用于子和函数。

但是,当子/函数有参数时,F5 选项将不起作用。在您的屏幕截图中,给定的函数需要一个参数,因此按上述方式运行此类代码的长期 F5 将不起作用。在这种情况下发生的情况是宏提示将按照您的指示启动。

两个建议: 敲ctrl-g,你的光标现在应该在调试窗口中,你可以输入函数(或子)的名称并提供参数。

例如:

Test9999 "my first prameter"

另一种方法是编写一个通过参数的测试代码存根,如下所示:

Public Sub RunMyFunction()

   Test8888 "my paramter"

End Sub

因此您现在可以按 F5。因此,您无需按照此处的建议从表单或按钮运行代码。但是,一旦子/函数具有参数,您就会失去 F5 以从 VBA IDE 运行代码。您必须编写代码存根,或者按照说明输入函数名称 + 在调试窗口中提供正确类型的所需参数才能运行该函数。

但是,公平地说,您可以构建一个测试表单,并将代码放在按钮后面,但您的问题是在 IDE 的上下文中以及使用 F5 来运行此类代码。

【讨论】:

以上是关于Access 新手如何运行没有 Sub 的 VBA 代码?的主要内容,如果未能解决你的问题,请参考以下文章

访问 vba:为啥 form_delete sub 运行两次

如何使用 excel VBA 运行访问查询?

如何通过 Access VBA 正确访问 Excel 文件

VBA、Access 和 SQL 的新手。我如何编写一个 SQL 查询来搜索我的 AccessDB 中的一个表并在找到它时给我一个 True/False? [复制]

来自 Access 的 Excel VBA SQL 没有结果

通过 VBA 在 Access 2007 中运行以相同单词开头的多个查询