将数组从vba传递到c#时,数据类型不匹配在哪里?

时间:2015-09-03 21:18:20

标签: c# arrays vba arguments

我的C#COM DLL有一个接受float数组和long int数组的方法。它返回一个浮点数。

从MS Access模块​​中的VBA,我创建一个类型为single的数组,另一个类型为long的数组,填充它们,创建DLL app.class对象,然后使用这两个数组调用它的方法。但是我收到了“类型不匹配”的错误。

以下是实际代码,但它很简单,因为我在添加“真实”代码之前尝试计算通信。

C#代码:

public float JustTesting(float[] Array1, long[] Array2)
{
    return 96.0F;
}

VBA代码:

Public Sub Test()
    Dim a1(0 To 0) As Single, a2(0 To 0) As Long, sng As Single
    a1(0) = 5
    a2(0) = 10
    Dim o As Variant
    Set o = CreateObject("MyApp.MyClass")
    sng = o.JustTesting(a1, a2)
    Debug.Print CStr(sng)
    Set o = Nothing
End Sub

数据类型不匹配在哪里?

1 个答案:

答案 0 :(得分:4)

VBA中的Long仅为32位,与C#中的int相同。因此,您的方法需要采用ints

数组
public float JustTesting(float[] Array1, int[] Array2)
{
    return 96.0F;
}
相关问题