我现在很困惑。我在 Visio 中使用 VBA 制作一些自动图表,尽管我认为它是 Visio 并不重要。我已经定义了多个类,其中一些类相似,但由于各种原因,它们的属性略有不同。我有一些函数可以接受这些类之一的变量,但我需要具体知道将我的哪个类传递给该函数。
因此,我过去常常TypeName
将我的班级名称作为字符串,然后使用if
或select case
块根据该名称选择操作。
我有一个文件,它完美地运行。我今天刚刚重新打开它,以确保我没有疯。我有一个名为的类,Dimension_Compound
并且在函数中有一个语句,If TypeName(theseTopDims) = "Dimension_Compound"
其中theseTopDims
是一个变体,该变体是一个数组,可以是我的自定义类之一,Dimension_Base
也Dimension_Compound
可以是整数数组。并且它可以正确编译和执行,没有问题。
我今天正在处理一个新的基于宏的图表。我有一个类似的语句,Select Case TypeName(newShape)
其中newShape
Variant 可以是我的自定义类,PLMShape
也可以是标准 VisioShape
类型。而且,它在那一行上卡住了。我收到错误:
Wrong Number of arguments or invalid property assignment
因此,我查看了Microsoft Learn 帮助页面,其中明确指出:“必需的 varname 参数是一个包含除用户定义类型的变量之外的任何变量的变量。 ”
所以,现在我的问题不是为什么我的新代码不起作用,而是我的旧代码怎么可能起作用?我在之前的项目中完全没有意识到这个要求——然而,它起作用了,当我今天加载它时,它继续起作用。我检查了所有参考库,甚至将这些库添加到我的新项目中,看看其中一个库是否添加了功能,TypeName
但即使添加了这些引用,它仍然给我同样的错误。