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

SMi*_*Mir 6 excel vba breakpoints excel-vba

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

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

所以我的问题归结为:

  1. 是否可以在VBA代码中以编程方式设置断点?
  2. 如果上述问题的答案为,那么解决这个问题的有效方法是什么?

更新: 感谢您的评论/回复.正如我暗示的那样,我感兴趣的是对当前代码的最少量修改(即插入if-blocks等)并且最感兴趣的是断点概念.我想知道它是否可行.

Tra*_*ace 14

STOP如果某个条件为真,请使用关键字来中断代码.

  • IIRC停止保存状态,同样适用于Debug.Assert IfFalse (4认同)

Arp*_*ini 9

有两种方法可以做到这一点:

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

     if (x = 21 ) Then
       Stop
      End If
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用添加监视 在此输入图像描述

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

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


小智 5

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

你可以使用手表:

右键单击要监视的变量 -> 添加监视...在监视类型中:“值更改时中断”

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