22

我只是发布这个,因为我无法在任何地方找到解决方案。我终于弄明白了。真的有点傻。

在 Access 宏中使用 RunCode 属性时,我试图从我的全局模块中运行一个 Sub。我收到错误“您输入的表达式具有数据库找不到的函数名称。” 我无法弄清楚问题是什么。我听从了在这个问题上发布的每个人的建议,主要是以下几点:

  1. 在过程名称的末尾使用 ()
  2. 不要在过程名称前使用“=”

还是没用!

4

9 回答 9

41

然后我仔细阅读了错误信息。它提到它找不到 FUNCTION 名称。显然,RunCode 属性特别需要“功能”而不是子。所以,我只是将我的 Sub 更改为 Function 并且效果很好!

希望这可以帮助。

于 2013-06-21T22:01:12.213 回答
6

另一个对我有用的解决方案:

模块名称不能与模块中的过程名称相同。

于 2016-12-20T19:37:24.880 回答
2

我对错误消息有类似的问题。我的 VBA 代码有以下声明:

private function MyFunction()

....

end function

我删除private了声明以Macro Runcode执行MyFunction()

例如:

Function MyFunction()

End Function
于 2014-04-11T04:53:10.210 回答
1

我的错误是将函数放在类模块而不是常规模块中。

于 2019-02-26T17:03:39.470 回答
0

Access 2013:在 MyFunction 不存在的 RunCode 中使用 MyFunction() 调用的函数给了我错误 2425。但是,以上都对我不起作用,当该函数存在并且是公共的时,我仍然收到错误号 2001。数据库位于受信任的位置。没有编译错误,但 MyFunction 中的某些内容不起作用,即

DoCmd.ShowAllRecords 

在 GoToControl 努力选择我的子表单之后。真正的问题是我用 VBA 删除过滤器的代码。ShowAllRecords 手册似乎表明这应该有效,但将 DoCmd.ShowAllRecords 替换为

DoCmd.RunCommand acCmdRemoveFilterSort 

解决了我的问题。

于 2015-04-14T18:54:51.153 回答
0

我的 VSTO C# 调用app.Run("MyMacro")突然停止工作,错误消息开始打印。(“Access 找不到过程 MyMacro。”)

我机器上的问题是我的代码(连接到正在运行的 Access 实例)正在连接到一个僵尸数据库实例,该实例中没有该 VBA 宏。去搞清楚。僵尸实例没有显示在任务栏、Alt-TAB 显示或我使用控制台程序打印出的窗口列表中。

我发现它的方法是让我的 VSTO 代码打印出它所连接的数据库的名称。Access 数据库是我早些时候一直在使用的数据库,没有出现任何错误。在尝试运行 MyMacro 前几个小时,我已经成功关闭了 Access 应用程序。

除了将 VStudio 升级到最新版本之外,我想不出我所做的任何不寻常的事情。可能重新启动会解决问题。多么奇怪的问题。

于 2020-06-09T23:40:07.740 回答
0

除了调用的 VBA 函数之外,数据库似乎还需要在其中包含对象。如果没有其他对象(在我的情况下特别是表),则无法从调用环境(例如 Excel VBA)中找到该函数。

于 2017-09-07T04:56:36.897 回答
0

我从网上借了一个“模板”vbasic文本作为外壳。虽然我在代码部分重命名了函数,但 MSAccess/Vbasic 没有在模块框的函数标题中显示名称更改,所以当我运行调用该函数的宏时,它说找不到它。反复尝试修复。然后我注意到 vbasic 的代码部分中的名称与函数对话框的标题不同。所以我在标题框中手动更改了名称,它提示我保存我所做的,现在它可以工作了。也许这就是蛇软件如此受欢迎的原因。:)

于 2019-11-11T17:36:16.847 回答
0

Access Office 365: My subroutine works when called from within VBA and used to work in Macros. Moved function text to a separate module, saved it by itself. Gave the module (not class) a unique name.

于 2019-09-19T15:54:53.197 回答