在双数组上键入不匹配

时间:2017-07-21 13:56:34

标签: excel vba excel-vba dictionary

在处理编译错误时遇到一些麻烦。我有一个类来运行一些进程并更新它的一些全局变量。我还有另一个需要访问这些变量的类,所以我已经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':下标超出范围

1 个答案:

答案 0 :(得分:0)

ClassCoreVariables("All_ACM")不是Double(),而是Variant包含一个(字典中的任何内容都是这样存储的)。

TypeName()正在解析Variant中的类型并显示基础类型,但运行时调用该函数时运行时不会执行此操作。

您需要将ACM作为Variant传递:

Function BuildMatrix(ACM As Variant)