【问题标题】:VBA can't enter break mode after running external DLL运行外部 DLL 后 VBA 无法进入中断模式
【发布时间】: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 -&gt; General -&gt; Error Trapping 设置为“Break on class errors”。

标签: vba excel dll


【解决方案1】:

看起来(在谷歌搜索一段时间后)我无法进入中断模式,因为 DLL 在执行期间会删除工作表。似乎删除工作表是不进入中断模式的原因。似乎没有人解释其中的原因。

如果有人对此有解决方法,我会很高兴。作为大型项目的一部分,我添加和删除工作表。

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2011-03-20
    • 2018-09-04
    • 2014-09-09
    • 2019-07-21
    相关资源
    最近更新 更多