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