在处理编译错误时遇到一些麻烦。我有一个类来运行一些进程并更新它的一些全局变量。我还有另一个需要访问这些变量的类,所以我已经Scripting.Dictionary
来保持{key, value}
对。
这一切都运行正常,我可以在class a
中分配变量并在class b
中使用它们,只需引用Dictionary
及其关键字即可。
我遇到的问题是:在class b
内部我进行了一次函数调用,该函数调用了一个Double()
参数,其中我引用了Dictionary
来提取{{1} }}
这是函数调用:
Double().
请注意,TransMatrix = BuildMatrix(i, Control_O(), Control(), Control_Surv(), ClassCoreVariables("All_ACM")())
指的是我的词典。
为完整起见,以下是上述函数声明:
ClassCoreVariables(All_ACM)
当我尝试执行此代码时,出现以下错误:
编译错误:类型不匹配:数组或用户定义的预期类型
这令我感到困惑,因为我检查了类型:
Public Function TransMatrix(Treat As Integer, OverS() As Integer, OverSur() As Integer, Survi() As Variant, ACM() As Double)
Debug.Print TypeOf(ClassCoreVariables("All_ACM")()
我还检查过以确保数组不是空的(它不是),并且在研究之后我还尝试将类型更改为Returns: Double()
网络..
我不确定如何进一步前进,并希望得到一些帮助。
如果我错过了相关信息,请提前询问并表示感谢。
更新
Variant
返回运行时错误:
运行时错误' 9':下标超出范围
答案 0 :(得分:0)
ClassCoreVariables("All_ACM")
不是Double()
,而是Variant
包含一个(字典中的任何内容都是这样存储的)。
TypeName()
正在解析Variant中的类型并显示基础类型,但运行时调用该函数时运行时不会执行此操作。
您需要将ACM作为Variant
传递:
Function BuildMatrix(ACM As Variant)