Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 双数组上的类型不匹配_Vba_Excel_Dictionary - Fatal编程技术网

Vba 双数组上的类型不匹配

Vba 双数组上的类型不匹配,vba,excel,dictionary,Vba,Excel,Dictionary,在处理编译错误时遇到一些问题。我有一个类,它运行一些进程并更新一些全局变量。我还有一个类需要访问这些变量,所以我制作了一个Scripting.Dictionary来保存{key,value}对 这一切都很好,我能够分配a类中的变量,并在b类中使用它们,只需使用它的键参考字典 我遇到的问题是:在类b中我进行了一个函数调用,该调用使用了一个Double()参数,我在该参数中引用了我的字典,以拉取Double()。 下面是函数调用: TransMatrix = BuildMatrix(i, Contr

在处理编译错误时遇到一些问题。我有一个类,它运行一些进程并更新一些全局变量。我还有一个类需要访问这些变量,所以我制作了一个
Scripting.Dictionary
来保存
{key,value}

这一切都很好,我能够分配
a类
中的变量,并在
b类
中使用它们,只需使用它的键参考
字典

我遇到的问题是:在
类b中
我进行了一个函数调用,该调用使用了一个
Double()
参数,我在该参数中引用了我的
字典
,以拉取
Double()。

下面是函数调用:

TransMatrix = BuildMatrix(i, Control_O(), Control(), Control_Surv(), ClassCoreVariables("All_ACM")())
注意
classcorevalues(All_ACM)
指的是我的字典。

为完整起见,以下是上述函数声明:

Public Function TransMatrix(Treat As Integer, OverS() As Integer, OverSur() As Integer, Survi() As Variant, ACM() As Double)
当我尝试执行此代码时,出现以下错误:

编译错误:类型不匹配:应为数组或用户定义的类型

这让我很困惑,因为我已经检查了类型:

Debug.Print类型(ClassCoreVariables(“All_ACM”)()
返回:Double()

我还检查了以确保数组不是空的(它不是空的),并且在研究web之后,我还尝试将类型更改为
Variant

我不确定如何进一步进行,并将感谢一些帮助

如果我遗漏了任何相关信息,请提前询问并感谢

更新
Debug.Print类型名(ClassCoreVariables(“All_ACM”)())

正在返回运行时错误:

运行时错误“9”:下标超出范围

ClassCoreVariables(“All_ACM”)
不是一个
Double()
它是一个
变量,包含一个变量(字典中的任何内容都是这样存储的)

TypeName()
正在从变量解析类型,并向您显示基础类型,但在您调用函数时,运行时不会这样做

您需要将ACM作为
变量传递:

Function BuildMatrix(ACM As Variant)
ClassCoreVariables(“All_ACM”)
不是一个
Double()
它是一个
变量,包含一个变量(字典中的任何内容都是这样存储的)

TypeName()
正在从变量解析类型,并向您显示基础类型,但在您调用函数时,运行时不会这样做

您需要将ACM作为
变量传递:

Function BuildMatrix(ACM As Variant)

ClassCoreVariables(“All_ACM”)
不是一个
Double()
它是一个
变量
包含一个变量-字典中的任何内容都是这样存储的。
TypeName
正在从变量解析类型,并向您显示基础类型,但当您调用函数时,运行时不会这样做。您需要将
ACM作为变量传递
谢谢您的回复,我已尝试使用c将函数声明中的类型更改为
Variant
,但仍然没有任何乐趣。适用于我@AlexK。啊,我在函数声明中携带了
ACM()
。我非常确定它现在可以工作了,感谢您的快速响应。如果您愿意写出来,我很高兴确认您的答案。
classcorevalues(“All\ACM”)
不是双精度()
它是一个
变量
包含一个变量-字典中的任何内容都是这样存储的。
TypeName
正在从变量解析类型,并向您显示基础类型,但当您调用函数时,运行时不会这样做。您需要将
ACM作为变量传递
谢谢您的回复,我已尝试使用c将函数声明中的类型更改为
Variant
,但仍然没有任何乐趣。适用于我@AlexK。啊,我在函数声明中携带了
ACM()
。我非常确定它现在正在工作,感谢您的快速响应。如果您愿意写出来,我很高兴确认您的答案。