Excel VBA – 暂停代码执行

我有一个复杂的VBAfunction和多张工作表。 假设代码遍历Sheet1的每一行,并对该数据执行一些操作。

我想能够暂停SourceRow = 16 ,检查结果我在不同的工作表上,然后继续(按确定,或一些关键行程)

我试过了

 If SourceRow = 16 Then MsgBox "ReachedRow 16" End If 

但消息框是模态的,我不能切换到不同的工作表来查看数据。

PS 16就是一个例子,现在硬编码,但不会晚。

  1. 右键单击SourceRow (在代码中的任意位置),然后单击Add Watch...
  2. 在出现的对话框中,在“ Expression文本框中input以下内容:

     SourceRow = 16 
  3. 在“ Watch Type ,selectBreak when value is True

  4. 点击OK

当达到该值时,这会自动导致程序中断/暂停,并且不需要为了debugging/暂停目的而添加任何新代码。

您可以使用Stop语句,然后按F5继续执行代码。 这类似于添加断点。

 If SourceRow = 16 Then Stop End If 

该行在暂停时将突出显示为黄色,您应该能够导航工作表。

例:

在这里输入图像说明

以类似的方式,你可以使用Debug.Assert (sourcerow <> 16) ,当sourcerow<>16计算结果为false时,也就是说当sourcerow等于16时,将暂停代码。(感谢RBarryYoung的评论)

如果你不想永久停止你的代码,可以考虑在VB编辑器中编辑窗口左边的灰色区域添加一个断点,它应该是这样的:

在这里输入图像说明

线路到达时,代码将停止。 再次按F5恢复代码执行。 或者,您可以连续按F8键逐行逐行浏览代码。 这消除了设置许多断点的需要。

只需点击栗色圆圈即可closures该断点。 断点不会保存在代码中,所以这是一个临时的方法(与上面列出的两个方法相反,如果保存工作簿,这些方法将保留在VBA代码中)。

这些图片是从Wise Owl的关于断点的教程中获得的 。