VBA断点引入错误?

时间:2014-02-03 21:43:19

标签: vba debugging dictionary vbscript breakpoints

有没有人在VBA控制台中遇到过实际引入错误的断点?怎么可能发生这种情况?

故事的简短版本是我有一些代码在执行时按预期工作,没有断开的断点。但是,当在几个位置(在子例程和类方法中)切换断点时,代码在单步执行代码时会产生无法解释的错误。我通常会发现这是一个极不可能的解释,但是在花了2.5天试图调试代码后才发现它在关闭断点的情况下正确执行,我无法理解可能出现的问题。

详细信息:

断点打开时会发生两个不同的错误。

Run-time error '457': This key is already associated with an element of this collection

Run-time error '424': Object required

将代码从断点单步执行到行

后会发生457错误
 dictE.Add M.SubMatches.Item(0), tmpQ

其中达到此行代码的条件之一是dictE.Exists(M.SubMatches.Item(0))为假。

在发生457错误时选择Debug后会发生424错误。以类似的方式,错误将由(不同的)行抛出

 pathE = dictE.Item(Matches.Item(i).SubMatches.Item(0)).InFile

其中一个达到此行代码的条件之一是dictE.Exists(Matches.Item(i).SubMatches.Item(0))为True(并始终定义对象的.InFile属性)。

这两个错误都发生在自定义类的相同方法中。我想发布所有相关代码,但它与工作相关并且是专有的。有什么想法会发生这种情况吗?这是一个已知的问题?我试着用谷歌搜索类似问题的报道,但我一无所获。

1 个答案:

答案 0 :(得分:2)

不确定它是否与您的问题有关,但这里是一个例子,说明在使用字典并在断点处暂停时会出现意外情况......

Debug.Print "Break"上放置一个断点,然后运行以下代码:

Sub Tester()

    Dim d As Object

    Set d = CreateObject("scripting.dictionary")

    d.Add "K1", "first"
    d.Add "K2", "second"
    d.Add "K3", "third"

    Debug.Print d.Count '>>3 - as expected
    Debug.Print "Break" ' Enter '? d("blah")' in Immediate pane
                        '                      while halted here...
    Debug.Print d.Count '>> 4 ! key "blah" was added...

End Sub