Excel VBA – 暂停代码执行
我有一个复杂的VBAfunction和多张工作表。 假设代码遍历Sheet1的每一行,并对该数据执行一些操作。
我想能够暂停SourceRow = 16
,检查结果我在不同的工作表上,然后继续(按确定,或一些关键行程)
我试过了
If SourceRow = 16 Then MsgBox "ReachedRow 16" End If
但消息框是模态的,我不能切换到不同的工作表来查看数据。
PS 16就是一个例子,现在硬编码,但不会晚。
- 右键单击
SourceRow
(在代码中的任意位置),然后单击Add Watch...
-
在出现的对话框中,在“
Expression
文本框中input以下内容:SourceRow = 16
-
在“
Watch Type
,selectBreak when value is True
。 -
点击
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的关于断点的教程中获得的 。