如何执行 VBA Access 模块?

Posted

技术标签:

【中文标题】如何执行 VBA Access 模块?【英文标题】:How to execute VBA Access module? 【发布时间】:2011-07-19 23:32:00 【问题描述】:

好的,我正在使用 Access 2003,几天前我刚刚开始学习 Access 和 VBA。 我在一个模块中编写了一些代码,当我按下调试器工具栏上的播放按钮时没有错误。 我如何在我的数据库上实际执行此代码,以便它执行某些操作。 换句话说,我如何使用该模块?

请帮帮我,我正在努力奋斗,截止日期是星期四!

谢谢!

【问题讨论】:

【参考方案1】:

这取决于您要如何调用此代码。

您是通过单击表单的按钮调用它,如果是,则在表单上按钮的属性中,转到“事件”选项卡,然后单击“单击”项目,选择[事件过程]。这将打开该按钮的 VBA 代码窗口。然后你会调用你的 Module.Routine,然后当你点击按钮时这会触发。

与此类似:

Private Sub Command1426_Click()
    mdl_ExportMorning.ExportMorning
End Sub

此按钮单击事件调用Module mdl_ExportMorningPublic Sub ExportMorning

【讨论】:

问题是我没有使用表单。我有一个包含某些产品订单信息的数据库。我需要交叉引用这些产品,以查看哪些产品最常一起销售。我认为这太复杂了,无法进行查询,所以我想我会尝试用 VBA 来做。我会完全错了吗?有没有办法只“调用”表上的过程? 你需要调用它才能执行它。我通常使用一个表单,我可以在其中使用 Timer Event 或 Click Event 来调用它。您还可以通过 Access 中的宏或从工具栏进行这些调用。我从未从查询中调用 VBA,但它可能是可能的,请参阅包含的链接。 social.msdn.microsoft.com/Forums/en-NZ/accessdev/thread/… 我现在看到了,我通过宏搜索了正在运行的模块并找到了答案。非常感谢!【参考方案2】:

如果您只是想运行一个函数进行测试,您可以在 Access 中使用Immediate Window。

在 VBA 编辑器中按 Ctrl + G 将其打开。

然后你可以像这样运行你的函数:

?YourFunction("parameter")(对于有返回值的函数 - 返回值显示在即时窗口中) YourSub "parameter"(对于没有返回值的 subs,或者对于你不关心返回值的函数) ?variable(显示变量的值)

【讨论】:

Strg 相当于美式键盘上的Ctrl【参考方案3】:

您运行的不是模块——您运行的是恰好存储在模块中的子例程/函数。

如果您将代码放在独立模块中,并且未在子例程/函数的定义中指定范围,则默认情况下它们将是公共的,并且可以从应用程序中的任何位置调用。这意味着您可以在宏中使用 RunCode 调用它们,从表单/报告的类模块,从独立的类模块,或从 SQL 调用函数(有一些警告)。

鉴于您尝试在 VBA 中实现一些您认为对于 SQL 来说过于复杂的东西,SQL 可能是您希望在其中执行代码的上下文。因此,您应该能够在 SQL 语句中调用您的函数:

  SELECT MyTable.PersonID, MyTable.FirstName, MyTable.LastName, FormatAddress([Address], [City], [State], [Zip], [Country]) As Address
  FROM MyTable;

该 SQL 调用一个名为 FormatAddress() 的公共函数,该函数将地址的组成部分作为参数并适当地格式化它们。这是一个简单的示例,因为您可能不需要 VBA 函数来实现此目的,但关键是您可以在 SQL 语句中调用函数。

子例程(即不返回值的代码)不能从 SQL 语句中调用。

【讨论】:

以上是关于如何执行 VBA Access 模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VBA 代码中的 ms-access 中执行查询?

在 Excel 中运行 VBA 代码以获取 Access 数据库中的 VBA

Access vba:如何在两个相关表中执行插入?

是否可以在 Access 查询中使用其模块名称来限定 VBA 函数调用?

使用VBA将VBA模块从Access项目导出到Excel项目

如何在 access accde 中更新表单和编译的 vba