我有一个可以打印图表的项目。单击“打印”按钮时,“打印预览”表单将加载:
Public Sub print()
printPreview.Show
End Sub
当我在调试模式下运行以及安装分布式安装包时,我的开发机器上的一切正常。
出于某种原因,其他所有试图打印的人都无法显示预览。进一步测试表明,从不调用预览的Load
函数,并忽略打印函数中Show
之后的任何内容。就像函数跳转到打印函数的End Sub
一样。
看起来printPreview.Show失败但除了表单没有出现这一事实外没有任何错误,警告或任何错误的指示。有没有人经历过这样的事情?
答案 0 :(得分:4)
你可能在某个地方有On Error Resume Next
个调用堆栈。
您可能希望更改该函数以使其拥有自己的错误处理程序并在其中捕获消息或执行On Error GoTo 0
。
我还会检查那些失败的机器上的事件日志以获取任何其他信息。
答案 1 :(得分:3)
在打印方法被调用时,你有“On Error ...”吗?我猜测你的printPreview表单依赖于一个或多个未安装在用户计算机上的组件,并且抛出了一个错误,你会在没有意识到的情况下捕获它。
答案 2 :(得分:0)
您是否尝试过vbModal
,看看会发生什么?另外(您可能已经这样做了),将一些调试语句放入代码中:
Public Sub print()
Debug.Print "Before show"
printPreview.Show
Debug.Print "After Show"
End Sub
并在打印预览表单的Form_Load
和Class_Initialize
(隐式调用,如果表单实例尚不存在!)中添加一些内容:
' In the print preview form:
Public Sub Class_Initialize()
Debug.Print "Start of PrintPreview constructor"
' … rest of the code.
Debug.Print "End of PrintPreview constructor"
End Sub
Private Sub Form_Load()
Debug.Print "Start of PrintPreview.Form_Load"
' … rest of the code.
Debug.Print "End of PrintPreview.Form_Load"
End Sub
并确保 确切地说输出缺失。
从你相当稀疏的描述中我怀疑Class_Initialize
方法会引发错误。