以编程方式在VBA代码中设置断点

时间:2012-07-24 16:08:52

标签: vba excel-vba breakpoints excel

我有一大堆用VBA编写的代码(> 50,000行 - 众多模块)。我有一个感兴趣的数组,我想找到这个数组中任何元素的值发生变化的所有条件。值可以在任何模块中更改。由于代码的大小,逐行运行脚本不是最有效的选项。

我正在寻找更好的方法来解决这个问题。我想到的两种方法是以编程方式设置断点(我不确定是否可以完成)或以编程方式在每次赋值后插入if-block,以某种方式提醒我值已更改。 (不是优选的)。

所以我的问题归结为:

  1. 是否可以在VBA代码中以编程方式设置断点?
  2. 如果上述问题的答案是,那么解决此问题的有效方法是什么?
  3. 更新 感谢您的评论/回复。正如我暗示的那样,我对当前代码的最少量修改感兴趣(即插入if-blocks等)并且对断点概念最感兴趣。我想知道它是否可行。

4 个答案:

答案 0 :(得分:13)

如果某个条件为真,请使用关键字STOP来破解代码。

答案 1 :(得分:4)

注意:我知道这是一个古老的话题,但这可以帮助其他人。

你可以使用手表:

右键单击要监控的变量 - >添加观察...... 在监视类型中:'价值变化时中断'

在运行代码时,您可以通过观察窗口检查手表的状态(可从“查看”菜单访问)

答案 2 :(得分:3)

有两种方法可以做到:

  1. 使用停止关键字。如下例,在Stop处设置一个断点

     if (x = 21 ) Then
       Stop
      End If
    
  2. 使用添加手表 enter image description here

    Go to Debug -> Select Add Watch

    转到调试->选择添加监视

答案 3 :(得分:1)

希望有人可以从中受益: 在这种情况下,无论使用何种编程语言 - 在Perl,AWK甚至shell脚本中编写几行代码都可以解决问题: 搜索包含数组名称的正则表达式(忽略大小写)。 将工作簿中的所有模块和类导出到给定目录后,脚本可以为您搜索这些模块和类。