9

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

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

所以我的问题归结为:

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

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

4

4 回答 4

17

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

于 2012-07-24T16:11:25.397 回答
6

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

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

     if (x = 21 ) Then
       Stop
      End If
    
  2. 使用添加手表 在此处输入图像描述

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

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

于 2020-07-16T15:01:15.040 回答
5

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

你可以使用手表:

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

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

于 2013-10-21T16:21:46.947 回答
1

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

于 2013-01-07T21:26:02.733 回答