4

=Test2(5)コードをモジュールに入れた後、Excelに入力します。なぜこれでByref argument type mismatchエラーが発生するのですか?

最初にTest2配列を作成するために1行を実行する場合:

Dim X1(5), X2(5) As Double、それからそれは動作します。しかしb、関数の引数リストから使用する場合は、 ReDimb定数ではなく変数であるため)使用する必要があり、エラーが発生します。

 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
4

1 に答える 1

13

これ:

Dim X1(), X2() As Double

X2()double としてのみ宣言し、doubleに変換する代わりに (integer)X1()の型を格納します(したがって、 を渡さないようにします)。bbAs Double

両方を double にするには、型宣言を繰り返す必要があります。

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

これは、正しい double 型が渡されることを意味しますTest1

于 2012-09-12T11:22:02.203 に答える