【发布时间】:2015-09-25 17:36:42
【问题描述】:
因此,通过 VBA 代码编写将调用加载项库中的子/函数的代码显然很容易,只需这样做
call myFunctionOrSub
但是,有没有一种方法可以让用户在加载项中直接调用公共子程序?例如,当用户转到工具 -> 宏并拉出此屏幕时:
我想将包含在与文件链接的加载项中的所有 Subs 添加到该框中的宏列表中。也就是说,我有一个当前工作簿引用的库 (library.xlam)。在这个 library.xlam 文件中,我有 Subs(例如 copyToResults)。我希望 copyToResults 在此列表中显示为可运行的宏。有没有办法做到这一点?
我能想到的唯一解决方案是在我的测试文件中为 library.xlam 中的每个 Sub 创建一个 Sub。测试文件中的这个 Sub 不会通过调用库的 Sub 来执行任何操作。但是,这对于拥有外部库的目的来说很糟糕,而且对于可扩展性来说也很糟糕,所以我们绝对不想走这条路。
【问题讨论】:
-
这是使用 Personal.xls(m) 工作簿而不是自定义例程的加载项的一种情况。如果它们在个人工作簿中,它们将显示在宏对话框中。
-
啊,是的,我也找到了该解决方案,但真的希望它能够通过宏对话框起作用。好吧,除非其他人想出奇迹,否则我想我会坚持下去。谢谢。
-
您可以在“宏”对话框中键入宏的全范围名称并运行它,即使它没有列出。但是,是的,这也不是很好。
-
最后一件事。您当然可以充实您的加载项工作簿,以包含一个用户表单,该用户表单提供与内置宏对话框基本相同的功能。这将允许您的外接程序的用户以熟悉的方式选择和运行外接程序中的各个例程。要显示用户表单,您可以定义键盘快捷键。 ALT-F8 打开正常的宏对话框。因此,您也许可以将 CONTROL-ALT-F8 用于自定义版本。加载项本身可以包含设置快捷方式的代码。您还可以让它创建一个功能区项目来启动用户窗体。所以还是有选择的。
-
我会支持 @ExcelHero 并使用自定义功能区 - 更加用户友好和包含。