Excel 处理自写类的对象的默认属性在64位office中显示出奇怪的行为

Excel 处理自写类的对象的默认属性在64位office中显示出奇怪的行为,excel,vba,class,oop,32bit-64bit,Excel,Vba,Class,Oop,32bit 64bit,在将VBA项目从32位迁移到64位的过程中,我在Excel 2016中遇到了以下奇怪的行为。下面的代码在32位Excel中运行良好 创建了一个自制的类“clDatenKnoten”来处理数据和做一些额外的事情。 它有一个默认成员,它被定义为一个带有返回类型变量的函数,因为它可能会根据上下文返回不同类型或对象的数据-更改它实际上不是一个选项 子测试() 尺寸tVar1为新clDatenKnoten,tVar2为字符串,tVar3为字符串 tVar1=“Name=bar”'对象默认的“setter”

在将VBA项目从32位迁移到64位的过程中,我在Excel 2016中遇到了以下奇怪的行为。下面的代码在32位Excel中运行良好

创建了一个自制的类“clDatenKnoten”来处理数据和做一些额外的事情。 它有一个默认成员,它被定义为一个带有返回类型变量的函数,因为它可能会根据上下文返回不同类型或对象的数据-更改它实际上不是一个选项

子测试()
尺寸tVar1为新clDatenKnoten,tVar2为字符串,tVar3为字符串
tVar1=“Name=bar”'对象默认的“setter”-函数处理字符串并保存“Name”的值
设置tVar2=tVar1
tVar3=tVar2(“Name”)'对象默认的“getter”-函数检索“Name”的值并返回它。
调试。打印1;VarType(tVar1);类型名(tVar1)
调试。打印2;VarType(tVar2);类型名(tVar2)
调试。打印3;变量类型(tVar1(“名称”);类型名称(tVar1(“名称”))
调试。打印4;变量类型(tVar2(“名称”);类型名称(tVar2(“名称”))
调试。打印5;“foo”和tVar3
调试。打印6;“foo”和tVar2(“名称”)
tVar3=“foo”和tVar2(“名称”)
调试。打印7;tVar3
tVar3=tVar1(“名称”)
调试。打印8;“foo”和tVar3
调试。打印9;“foo”和tVar1(“名称”)
端接头

在一个32位的办公室里。打印出
Debug.print 0时,在两个Office版本中都会发生什么;在第一个调试语句之前使用VarType(tVar2(“Name”)
?有趣的是看看有没有什么不同。VarType可能会给我们提供有关该变量的更多信息-当您将
tVar2
明确声明为
clDatenKnoten
?@UnhandledException:否。对于显式类型,它的行为与行为tVar1完全相同。因此,我假设这是一个松散类型的问题(但是,typename(tVar2)=typename(tVar1)=“clDatenKnoten”可以正确识别)@Ben,很抱歉这么长时间的延迟。我编辑了这篇文章,加入了VarType(虽然这并没有真正的帮助。)我对“7 barbar”没有任何解释-在我看来,在VBA让我们看到的较低级别上发生了一些非常奇怪的事情。您是否可以取消默认的成员功能,只显式地设置和获取命名属性,从而排除这一因素?