调试VBA宏

调试VBA宏,vba,excel,Vba,Excel,我有一个带宏的excel文件。它被用作我们程序的模板。程序打开此文件,调用宏并将数据作为参数放入其中。问题是,当从应用程序调用此宏时,如何调试它?例如,在Visual Studio中,我可以使用“附加到进程”,也许VBA中有类似的功能?我有几种不同的方法在Excel中执行调试,但没有一种是完美的或非常复杂的 在整个代码中使用debug.print打印到即时窗口,以查看程序的执行情况。这在两种情况下都很有用-如果您想查看程序执行的大致进度,或在执行过程中的位置,或者,如果您的程序在某个特定位置遇到

我有一个带宏的excel文件。它被用作我们程序的模板。程序打开此文件,调用宏并将数据作为参数放入其中。问题是,当从应用程序调用此宏时,如何调试它?例如,在Visual Studio中,我可以使用“附加到进程”,也许VBA中有类似的功能?

我有几种不同的方法在Excel中执行调试,但没有一种是完美的或非常复杂的

  • 在整个代码中使用debug.print打印到即时窗口,以查看程序的执行情况。这在两种情况下都很有用-如果您想查看程序执行的大致进度,或在执行过程中的位置,或者,如果您的程序在某个特定位置遇到了障碍,并且希望查看程序执行时发生的情况,则可以使用debug.print进入并添加更多详细信息
  • 创建一个数组,在程序执行时在数组中输入日志信息,并在程序执行完成时打印数组。这是不完美的,因为它在程序执行未成功完成的情况下并不真正有用,但在希望获得有关程序如何作为解剖的一部分运行的统计信息的情况下,它非常有用
  • 向程序中添加代码中断,以便您可以看到程序在运行时是如何执行的。使用即时窗口检查程序中变量的值

  • 同样,这些都不是完美的。

    您想知道如何使用Excel VBA调试器,或者如何设置测试环境以模拟以Excel作为主要测试驱动程序的场景吗?断点实际上是我需要的,但是当宏从程序中调用而无法工作时,是否可以在辅助电子表格的代码中添加断点?那会解决你的问题。或者是您无法访问主程序正在打开的辅助电子表格的问题?该程序使用文件的临时副本。因此,如果我在代码中设置断点,它将被忽略。明白了。我签出了这个站点(),它澄清了您遇到的问题——本质上,您不能在中添加断点并保存文件。在这种情况下,有两种想法:(1)向临时文件中的每个过程添加错误处理;(2)在每个过程开始执行时添加一个MsgBox,以便知道将要执行的内容。(这可能有些过分,但我假设您正在尝试调试的临时文件中有一个特定的问题。)debug.print在这种情况下也是您的朋友。我已经找到了解决方案。我可以使用'Stop'关键字以编程方式添加断点