【发布时间】:2014-05-20 11:38:46
【问题描述】:
我编写了一个 DLL,并在 Excel VBA 中使用了它的一些函数。我在调用 DLL 之后的行中插入了一个断点。当它到达那里时,我收到错误“此时无法进入中断模式”。代码是:
Public tester As Finance.Root
Sub testing()
Set tester = New Finance.Root
Set aa = Sheets(1).Range("A1")
Call tester.startUp(aa)
MsgBox ("HI")
End Sub
被调用的 DLL 的第一部分是:
Sub startUp(excelLink)
Set MB = excelLink.Application.ActiveWorkbook
Set oExcel = excelLink.Application
oExcel.DisplayAlerts = False
Call fillGlobals
MB.Sheets.Add Type:=appPath & "\scripts\TestGLPage.xls"
Set HP = MB.Sheets("Home Page")
For Each sht In MB.Sheets
If sht.Name <> HP.Name Then sht.Delete
Next sht
WhichGL.Show 1
End Sub
编辑:我在运行 DLL 后添加了一个 msgbox(请参阅更新的代码),并且确实会弹出消息框。在消息框之后,我收到错误消息“无法进入中断模式”。这让我相信它与运行 DLL 无关。我会收到该错误消息的任何其他原因? 任何帮助将不胜感激。
【问题讨论】:
-
如果我们知道您说的是什么 dll 可能会有所帮助。
-
您确定执行已从 dll 返回吗?您可以将 Visual Studio 调试器连接到 Excel 应用程序实例并通过 dll 跟踪调用吗?只是抓住稻草;)
-
我做到了。它一直运行到 DLL 的最后一个 End Sub,然后我收到错误消息
-
我在运行 DLL 后添加了一个 msgbox(请参阅更新的代码),并且确实会弹出消息框。在消息框之后,我收到错误消息“无法进入中断模式”。这让我相信它与运行 DLL 无关。我会收到该错误消息的任何其他原因?
-
滚动你自己的
dll可以让你在一些孤独的地方。也就是说,您可以尝试在 VBA 编辑器中将Options -> General -> Error Trapping设置为“Break on class errors”。