Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 编译错误或未定义子函数_Ms Access_Vba - Fatal编程技术网

Ms access 编译错误或未定义子函数

Ms access 编译错误或未定义子函数,ms-access,vba,Ms Access,Vba,我已经为这个问题挣扎了一段时间。这是我向stackoverflow提出的第一个问题。我正在开发一个Access报告,它使用一个对话框表单供用户输入要在报告上显示的特定客户端。我已经能够打印出报告,但无法处理用户是否在对话框窗体上输入“取消”。我已从另一个Access数据库中的现有报表复制了代码 这是我的报告(u Open Sub): Private Sub Report_Open(Cancel As Integer) ' Set public variable to true to indi

我已经为这个问题挣扎了一段时间。这是我向stackoverflow提出的第一个问题。我正在开发一个Access报告,它使用一个对话框表单供用户输入要在报告上显示的特定客户端。我已经能够打印出报告,但无法处理用户是否在对话框窗体上输入“取消”。我已从另一个Access数据库中的现有报表复制了代码

这是我的报告(u Open Sub):

Private Sub Report_Open(Cancel As Integer)  
' Set public variable to true to indicate that the report  
' is in the Open even   
   bInReportOpenEvent = True  

 ' Open Appt Query Dialog  
   DoCmd.OpenForm "craid CMM Client Report Dialog", , , , , acDialog  

 ' Cancel Report if User Clicked the Cancel Button    
   If IsLoaded("craid CMM Client Report Dialog") = False Then Cancel = True  

' Set public variable to false to indicate that the    
' Open event is completed    
  bInReportOpenEvent = False  

End Sub
当我运行这个程序时,我会看到“编译错误:未定义子或函数”,突出显示单词“IsLoaded”。我可以注释掉已加载的代码行,但如果单击对话框窗体上的“取消”,则会出现错误

我在前面的问题中看到了这个错误,但无法确定满足我需求的解决方案。谢谢你的帮助


Laura

正如Thomas在评论中指出的那样,
IsLoaded
不是标准的VBA函数,因此编译器将在求值范围内和所有公共模块中搜索名为
IsLoaded
的子函数或函数,如果未找到此类子函数或函数,则会报告错误

假设您的函数仅返回一个布尔值来确定具有所提供名称的窗体是否处于打开状态,则函数定义可能如下所示:

函数作为布尔值加载(strName作为字符串)
IsLoaded=CurrentProject.AllForms(strName).IsLoaded
端函数

将上述定义复制到报表模块或公共模块中,可以解决您面临的错误。但是,理想情况下,您应该为函数的原始定义找到源代码。

正如Thomas在评论中指出的,
IsLoaded
不是标准的VBA函数,因此编译器将在求值范围和所有公共模块中搜索名为
IsLoaded
的子函数或函数,如果未找到此类子模块或函数,则将报告错误

假设您的函数仅返回一个布尔值来确定具有所提供名称的窗体是否处于打开状态,则函数定义可能如下所示:

函数作为布尔值加载(strName作为字符串)
IsLoaded=CurrentProject.AllForms(strName).IsLoaded
端函数

将上述定义复制到报表模块或公共模块中,可以解决您面临的错误。但是,理想情况下,您应该为函数的原始定义提供源代码。

不是在标准VBA函数中加载的。您从其他地方复制了代码,在这里,您还必须复制一个自定义的IsLoaded函数。另外,请显示触发报表打开的代码。这是一个按钮点击事件?在非标准VBA函数中加载。您从其他地方复制了代码,在这里,您还必须复制一个自定义的IsLoaded函数。另外,请显示触发报表打开的代码。这是一个按钮点击事件?在我添加了你建议的函数定义中可以找到另一种检查方式,解决了这个问题。它现在正在干净地编译,并在我的对话框窗体中处理Cancel按钮。谢谢你的帮助。我查看了所有原始报告,试图找到IsLoaded的定义,但什么也没有找到。我添加了您建议的函数定义,解决了问题。它现在正在干净地编译,并在我的对话框窗体中处理Cancel按钮。谢谢你的帮助。我查看了原始报告,试图找到IsLoaded的定义,但什么也没找到。