如何手动保存VBA手表或通过代码添加它们?

时间:2015-11-12 15:20:48

标签: vba excel-vba excel

我有相当数量的全局变量,并且在调试期间跟踪它们我使用手表。然而,在每个会话开始时一次又一次地添加所有这些都很烦人。有没有办法保存和加载它们?或者,如果无法通过代码添加它们?

此问题涉及VBA编辑器窗口中表达式的监视(参见屏幕截图)。 Screenshot

2 个答案:

答案 0 :(得分:8)

在名为WatchedVariables的类中,您可以拥有

Option Explicit

Private str_Variable1_Prev As String
Private str_Variable1 As String

Public Property Let strVariable1(value As String)
    str_Variable1_Prev = str_Variable1
    str_Variable1 = value
    If str_Variable1 <> str_Variable1_Prev Then
        Debug.Print "Variable 1 has changed"
    Else
    End If
End Property

然后你就可以访问你观察到的变量了,比如clsWatchedVariables.strVariable1 =&#34; nathan&#34;

但是,这可能有助于Find specific text in VBA watch list

答案 1 :(得分:6)

它不是很漂亮,但您可以使用Application.SendKeys添加手表。我不知道语言区域设置是否会影响快捷键。以下内容适用于英语。

限制是你只能使用当前模块或所有模块之类的东西(即一直向上或向下滚动),但不能用于范围的特定其他模块。您可以通过使用VBIDE查找有多少模块等来修复此限制,因此可以向上滚动特定模块的次数。我没有为下面的代码做这个,因为这是一个概念证明 - 我把有趣的部分留给你: - )

用法:使用指定的参数调用AddWatch子。您可以在开始新会话时将这些添加到您调用的子中,如我的“HelloNewSession()”中所示

运行代码时,VBE必须处于焦点。您可以手动执行此操作,也可以使用VBIDE对象设置焦点。

sudo apt-get install -f default-jre
sudo apt-get install -f default-jdk