标题中的问号只是因为我非常不愿意将任何东西称为编译器错误,但在这种情况下,如果有人能以任何其他方式解释这种行为,我会感到惊讶。
重现问题的代码非常非常简单。在标准模块中,我们有以下内容:
Sub CompilerBug()
Dim oClass As cClass
Set oClass = New cClass
If False Then
Debug.Print "This doesn't print, as it shouldn't."
End If
If Falsee(oClass.Clone) Then
Debug.Print "This does print, although it shouldn't!"
End If
End Sub
Public Function Falsee(oClass As cClass) As Boolean
Falsee = False
End Function
Run Code Online (Sandbox Code Playgroud)
我们cClass在名为 cClass 的类模块中定义了一个类 ( ),包含以下代码:
Public Function Clone() As cClass
Dim oClass As cClass
Set oClass = New cClass
Set Clone = oClass
End Function
Private Sub …Run Code Online (Sandbox Code Playgroud)