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()
。我非常确定它现在正在工作,感谢您的快速响应。如果您愿意写出来,我很高兴确认您的答案。