编译错误子或函数未定义

问题描述 投票:1回答:1

我一直在努力解决这个问题。这是我对stackoverflow的第一个问题。我正在开发一个Access报告,该报告使用对话框表单供用户输入要在报告上显示的特定客户端。我已经能够打印报告,但如果用户在对话框表格上输入“取消”,则无法处理。我已从另一个Access数据库中的现有报表中复制代码。

这是我的Report_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

当我运行它时,我得到“编译错误:Sub或功能未定义”,突出显示单词“IsLoaded”。我能够注释掉IsLoaded代码行,但是如果我在Dialog Form上单击“取消”,则会出现错误。

我在以前的问题中看到过这个错误,但是无法确定我的需求的解决方案。任何帮助赞赏。

劳拉

vba ms-access access-vba
1个回答
0
投票

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

假设您的函数只返回一个布尔值来确定具有提供名称的表单是否打开,则函数定义可能类似于以下内容:

Function IsLoaded(strNme As String) As Boolean
    IsLoaded = CurrentProject.AllForms(strNme).IsLoaded
End Function

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

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