我尝试通过向模块和表单添加 VBA 行数来改进我为文档数据库制作的报告。以下代码在标准模块中完美运行:
Sub test()
Dim accObj As AccessObject, bwasOpen As Boolean, objName As String
objName = "Form1"
Set accObj = CurrentProject.AllForms(objName)
bwasOpen = accObj.IsLoaded
If Not bwasOpen Then
DoCmd.OpenForm objName, acDesign, WindowMode:=acHidden
End If
If Forms(objName).HasModule Then
DoCmd.OpenModule "Form_" & objName
Debug.Print Modules("Form_" & objName).CountOfLines
End If
If Not bwasOpen Then
DoCmd.Close acForm, objName, acSaveNo
End If
End Sub
但是当我在报告本身中使用类似的代码时,我有一个错误。而且由于该错误发生在类模块(报告)中,我觉得调试有点卡住了。报告中的代码:
Set accObj = CurrentProject.AllForms(objName)
bwasOpen = accObj.IsLoaded
If Not bwasOpen Then
DoCmd.OpenForm objName, acDesign, WindowMode:=acHidden 'Breaks here
End If
If Forms(objName).HasModule Then
DoCmd.OpenModule "Form_" & objName
GetExtraInfo = Modules("Form_" & objName).CountOfLines
End If
If Not bwasOpen Then
DoCmd.Close acForm, objName, acSaveNo
End If
使用 =GetExtraInfo() 从报表控件调用代码。整个事情运行良好,除了这个我想返回表单的 CountOfLines 的新部分。
更新:我添加了一些错误捕获,它给出了错误:
2486 - 您目前无法执行此操作
整个数据库可以在这里下载,它只有 300 KB。该报告名为“rptObjList”。“坏”代码已被注释掉。它是一个 Access 2003 数据库。
谢谢你的帮助。