Byref参数类型不匹配

4 vba

=Test2(5)将代码放入模块后键入Excel.为什么这会给我一个Byref argument type mismatch错误?

如果在一开始Test2我做一行来创建我的数组:

Dim X1(5), X2(5) As Double那么它会起作用.但是当我b从函数的参数列表中使用时,我必须ReDim(因为它b是一个变量,而不是常量),然后导致错误.

 Function Test1(a As Double)

 Test1 = a * 2

 End Function

 Function Test2(b As Integer)
 Dim X1(), X2() As Double
 ReDim X1(b), X2(b) As Double
 Dim i As Integer

 For i = 0 To b
     X1(i) = i
     X2(i) = Test1(X1(i))
 Next i

 Test2 = X2(1)
 End Function
Run Code Online (Sandbox Code Playgroud)

Ale*_* K. 12

这个:

Dim X1(), X2() As Double
Run Code Online (Sandbox Code Playgroud)

只声明X2()为double,X1()将存储b(整数)的类型而不是b转换为double(因此阻止传递As Double).

要使它们都加倍,你必须重复类型声明;

Dim X1() As Double, X2() As Double
ReDim X1(b), X2(b)
Run Code Online (Sandbox Code Playgroud)

这将意味着传递正确的double类型 Test1