【问题标题】:Byref argument type mismatchByref 参数类型不匹配
【发布时间】:2012-09-12 11:18:04
【问题描述】:

将代码放入模块后,在 Excel 中键入 =Test2(5)。为什么这会给我一个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

【问题讨论】:

    标签: vba


    【解决方案1】:

    这个:

    Dim X1(), X2() As Double
    

    仅将X2() 声明为双精度,X1() 将存储 b 的类型(整数)而不是将 b 转换为双精度(因此防止传递 As Double)。

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

    Dim X1() As Double, X2() As Double
    ReDim X1(b), X2(b)
    

    这意味着正确的双精度类型被传递给Test1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-03
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 2017-12-10
      相关资源
      最近更新 更多