这是我不明白的一个。
给定这个类模块(精简到重现崩溃所需的最低限度):
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "TestCrashClass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Public Function Init() As TestCrashClass
Attribute Init.VB_UserMemId = 0
Dim tcc As New TestCrashClass
Set Init = tcc
End Function
Public Property Get Data() As String
Data = "test data"
End Property
谁能告诉我为什么当我输入这段代码时 Excel 会完全崩溃:
Sub MakeExcelCrash()
With TestCrashClass(
在这一点上,我这个可爱的消息:
即使我输入了一个没有冒犯括号的完整过程,然后尝试稍后添加它们,我也会遇到同样的崩溃。
我能让 Excel 不崩溃的唯一方法是将一组()
从其他地方复制/粘贴到这行代码。
Sub MakeExcelCrash()
With TestCrashClass()
Debug.Print .Data
End With
End Sub
如果该Init()
方法有一个参数——甚至是一个可选参数——它在输入左括号时不会崩溃。
我更好奇为什么会发生这种情况,而不是解决方法。它实际上并没有经常出现在我的代码中,当它出现时,我可以通过改变方法来修复它,但我真的很沮丧,因为我不知道是什么导致了这些崩溃。那么也许对VBA内部工作有更多了解的人可以向我解释一下?