【问题标题】:VBA Code Import - MS AccessVBA 代码导入 - MS Access
【发布时间】:2012-05-28 19:03:58
【问题描述】:

我在 Access 表单后面有几个用 VBA 编码的按钮。我将有许多表单,它们的页脚中有这些按钮(新、下一个、上一个、重复等)。这些按钮不是标准的宏,但足够简单,可以在我的所有表单中使用相同的代码。

我该如何编写这些按钮(在所有表单中都具有相同的名称......类似于模板),这样我就不必在所有表单中复制粘贴代码?有没有办法在模块中编写这些按钮并让表单导入该模块的文本(有点像大多数其他语言)?

只是好奇。使代码更简洁/更容易,因为编程的核心是我自己的,但其他人将对表单代码进行小幅编辑。

【问题讨论】:

    标签: ms-access vba import


    【解决方案1】:

    最简单的做法是在标准代码模块中为每个按钮的功能创建一个Function。然后将每个按钮的 Click 属性从 [Event Procedure] 更改为与该按钮对应的函数的名称(例如,=MyPrevFunction([Form]))。

    请注意,要使其正常工作,您必须专门使用 Function 而不是 Sub。 VBA 中没有要求函数返回任何内容,因此只需将单词 Function 替换为 Sub 即可进行更改。

    一张图片胜过一千个字。

    【讨论】:

    • 我想过这个,但是按钮广泛使用了“我”关键字,所以我必须一直将表单传递给函数。不难。我想也许如果有某种方法可以“导入”一组代码(如 PHP 可以),我可以有一个“主脚本”和一个导入。从这些答案来看,我猜 VBA 并不那么灵活。谢谢!
    • 这真的不难。只需像这样调用您的函数:=MyPrevFunction([Form]),表单对象将被传递给您的函数。我已经相应地更新了我的答案。
    • 一点也不难(我使用MyButtonFunction(Me) 来调用它),但我仍然需要为20 多个表单和10 多个按钮编写Private Sub myButton_Click() MyButtonFunction(Me) End Sub。不方便,我很懒,但仍然是一个正确的解决方案。现在,在参考设置完成后,主要的代码更改完全不需要时间
    • 不不不......你没有抓住重点。难怪你不喜欢这个解决方案。不要从每个表单的代码模块中调用MyButtonFunction(Me)。您可以从表单设计视图的属性表中调用它。如果您进入表单设计视图,选择您的按钮之一,然后按 [F4] 将打开属性表。转到事件选项卡。显示“On Click......”的行很可能包含以下文本:[Event Procedure]。这告诉 Access 去查看表单的代码模块,以了解单击按钮时要执行的操作。你可以完全绕过它....
    • ....通过将[Event Procedure] 更改为=MyButtonFunction(Form)无需代码。
    【解决方案2】:

    与@mwolfe02 建议的想法一样,您可以将按钮放在子表单中,这意味着只需要编辑一组按钮,或者更好的是,设置您自己的自定义菜单。这些可以在每个表单的基础上调用,也可以作为应用程序的“标准”菜单调用。您甚至可以拥有自己的右键菜单。

    【讨论】:

    • 等我有时间再研究一下;也许作为一个简单的更新。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多