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



我的c# COM DLL有一个方法可以接受浮点数数组和长整型数组。返回浮点数

从VBA在MS Access模块,我创建类型单一和另一个类型长数组,填充它们,创建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

哪里的数据类型不匹配?

VBA中的Long只有32位,与c#中的int相同。所以你的方法需要取一个数组ints

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

相关内容

最新更新