TOP

VBA-第 2 课。调试器 (Debugger)

VBA环境中用于调试程序代码的工具。能够使用调试器对于任何在 VBA 上编写代码的人来说都是至关重要的。为了检查代码的工作原理以及查找和修复其中的错误,需要它。


打开 Visual Basic Editor (Alt+F11)。 在其中创建模块,写入以下代码:

 Sub LearningDebug()
    Dim A As Long, B As Long, C As Long, D As Long

    D = 0
    A = 10
    Debug.Print "A = " + Trim(Str(A))
    B = 15
    Debug.Print "B = " + Trim(Str(B))
    C = A + B
    Debug.Print "C = " + Trim(Str(C))
    C = Round(C / 5)
    Debug.Print "Divide С by 5: C = " + Trim(Str(C))  'C 除以 5:C =
    C = Round(C / D) '这里会出现错误,因为不可能除以零(且 D = 0)
End Sub

按 Ctrl+G,Immediate 窗口将出现在底部。在这个窗口中,在宏运行过程中,可以改变变量的值,在VBA上执行不同的代码,之前没有写在模块中。

如果将光标放在模块代码内并按F5,它将完全执行。如果按F8,则只会执行一行代码。下次按 F8 将执行下一行代码,依此类推。您可以单步执行整个代码。您可以使用 F9 按钮创建断点。如果您随后使用 F5 运行代码,代码将运行到指定行,然后暂停。然后可以使用前面描述的 F5 或 F8 按钮继续。

如果仔细观察代码,您会发现变量 A、B、C、D 都被分配了数字。 Debug.Print“text”行将我们指定的文本打印到之前打开的 Immediate 窗口,以查看变量发生了什么。 Str(A) 将数字转换为文本值。 Trim() 删除其右侧和左侧的空格。运算符Round(C)根据算术规则将值四舍五入为整数(因此,我们将计算结果赋给整型变量Long,这意味着它必须是一个整数)。在代码的最后,我们特意创建了一个假的情况来练习使用调试器。

站在代码内并按 F8 四次。接下来要执行的行将被标记为黄色。将鼠标悬停在不同的变量上。同时,会出现一个弹出窗口,您将在其中看到它们的值。尚未赋值的变量等于零。再次按 F8。 Immediate 窗口中将出现一行: A = 10 现在我们可以立即在 Immediate 窗口中更改变量 A 的值(例如,将其更改为 8)。为此,请在 Immediate 窗口的新行中写入:A = 8 并按 Enter。现在将鼠标悬停在变量 A 上,可以看到其值为 8。要在不悬停的情况下查看该值,可以使其显示在 Immediate 窗口中。这样做是这样的,在窗口的空行中输入 Immediate: ?A 并按 Enter。符号?窗口中的 Immediat 与代码中的 Debug.Print 含义相同。这样写起来更容易、更短。您将立即看到该号码 - 您的请求的结果。

将光标置于代码的最后一行 (C = Round (C / D)) 并按 F9。将会出现一个断点。您可以使用同一按钮将其删除,但我们还不会删除它。按F5,程序将执行所有行并停在最后一行。在Immediate窗口中,将出现有关为变量赋值的消息。我们已经到达了最后一行代码。它应该抛出一个错误,因为它包含除零。按 F8 亲自查看。在出现的窗口中,单击Debug。如果你按下End,程序的执行就会停止,我们要结束它。

您可以通过更改变量 D 的值来纠正这种情况。现在它等于零。在 Immediate 窗口中,在空行中输入文本:D = 2,然后按 Enter。现在,在最后一行代码中,我们不是除以零,而是除以 2,从而避免了错误。按 F5,程序将完成其工作,不会出现错误。

尝试更改代码并练习使用调试器。相信我,这会让你的生活变得更加轻松。