在“本地”或“监视”窗口中查看对象会导致Excel崩溃。

5
在Excel中,当我运行一些代码并在其中设置一个断点时,可以通过在本地窗口中查看一些值。但是,在本地窗口中尝试展开我创建的类对象时,Excel崩溃并显示“Microsoft Office Excel遇到问题需要关闭。对此造成的不便我们深感抱歉。”如果我尝试在监视窗口中查看该对象,也会出现这种情况。
有什么想法吗?还是有人之前遇到过这个问题吗?
谢谢,
Chris

是的,绝对没错。我找不到问题的原因,所以我只是打开一个新的Excel工作簿,将所有的代码和格式粘贴进去,问题就解决了。可能是因为工作簿损坏了。如果它已经是一个庞大的Excel/代码文件,你能提供一些详细信息吗? - Larry
嗨,感谢您的评论。这是其中一种我无法发布代码的情况(是的,我知道没有看到代码很难说出问题所在 :( )。在发布此帖子之前,我将代码从类中复制并粘贴,然后重新创建了该类。其中有很多我继承的代码。你们用什么来自动重建电子表格?或者@Larry,你是手动完成的吗? - Chris
@bonCodigo,你能给我举几个不兼容的属性的例子吗?(顺便说一句,我已经删除了所有模块并保存了表格,打开并修复了表格,然后再添加回了模块,但问题仍然存在)。 - Chris
1
@Chris,你能否至少展示一下你的对象类属性和它失败的监视行?在问题/答案中包含代码片段符合社区的最佳利益 :-) - bonCodigo
你能否将你的秘密属性和类重命名并粘贴在这里?否则很难有人能够帮助你。 - Konstantin Spirin
显示剩余3条评论
1个回答

5

请仔细检查您的类属性,特别是GET代码。我曾经遇到过相同的错误,即在调试期间展开自定义类对象会导致Excel崩溃。当您在本地窗口中展开该对象时,Excel基本上会运行这些GET属性,因此它们必须编译并且不会引起任何运行时错误。

当然,如果没有看到他们的代码,我不能确定这是否绝对导致了OP的错误,但对于我来说,错误非常简单,其中一个GET属性包含类型不匹配:

Private pAccFullArr() As String

Public Property Get accFullArr() As Variant
    accFullArr = pAccFullArr
End Property

应该已经。
Private pAccFullArr() As String

Public Property Get accFullArr() As STRING()
    accFullArr = pAccFullArr
End Property

2
另外提供一个证词,以防对某人有用:我在我的一个类中也遇到了同样的问题,为了捕捉它,我开始注释掉该类的公共方法,直到找到有问题的方法。 - Clon
1
谢谢你。我在一个类中添加了一个新的getter,当你尝试检查它时,Excel会崩溃。如果没有你在这里发布的帖子,我就不会意识到这一点。这种情况有点疯狂,但这就是VBA。 - karl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接