所以这是错误:在64 位VBA 主机(例如 Access 365 64 位或 Excel 2016 64 位)中创建一个类模块SomeClass:
' this needs to be here to trigger the bug:
Private Sub Class_Terminate()
End Sub
Run Code Online (Sandbox Code Playgroud)
然后是一些模块Test:
Function ReturnFalse(o As Object) As Boolean
ReturnFalse = False
End Function
Sub Test()
Debug.Print ReturnFalse(New SomeClass)
If ReturnFalse(New SomeClass) Then
Debug.Print True
Else
Debug.Print False
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
现在,如果您使用的是32 位VBA 主机并在即时窗口中运行“测试” ,则会显示预期结果:
False
False
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用的是64 位VBA 主机,则会出现:
False
True
Run Code Online (Sandbox Code Playgroud)
除了,当您删除或重命名Class_Terminate()sub …