MS Access RunCode宏找不到我的程序

问题描述 投票:18回答:7

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

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

  1. 在过程名称的末尾使用()
  2. 请勿在程序名称前使用“=”

仍然没有奏效!

ms-access access-vba
7个回答
33
投票

然后我仔细阅读了错误消息。它提到它无法找到FUNCTION名称。显然,RunCode属性特别需要“Function”而不是Sub。所以,我只是将我的Sub改为Function,它工作得很好!

希望这可以帮助。


5
投票

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

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


2
投票

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

private function MyFunction()

....

end function

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

例如:

Function MyFunction()

End Function

0
投票

Access 2013:一个从RunCode调用MyFunction()的函数,其中MyFunction不存在,这给了我错误2425.然而,上述所有工作对我来说都没有,当函数存在并且是公共的时,我仍然得到错误号2001。数据库位于可信位置。没有编译错误,但MyFunction中的某些东西不起作用,即

DoCmd.ShowAllRecords 

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

DoCmd.RunCommand acCmdRemoveFilterSort 

解决了我的问题。


0
投票

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


0
投票

我想感谢上面的John Tipton并添加一些新信息。我正在使用MS Access 2016并开始遇到这个问题所以这个问题仍然是它丑陋的头脑。为了我的工作,函数名称和宏名称必须不同,并且在函数myFunc()之后的代码中,名称必须与您在Access侧栏中看到的模块名称不同。另一件奇怪的事。当我在Macro中选择RunCode时它会向我显示函数(它不会显示Sub VBA模块)我试图选择但是当我选择它时,Macro将它编码为函数名称,只有一个左侧的paren“(”。这是在Windows 8 Pro计算机上运行的。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.