我正在尝试在类型库中定义一个函数,该函数采用可变数量的参数,并且可以使用 ParamArray 从 VBA 调用。类型库中的条目如下。
[
helpstring("Get value from a Lookup table by an exact key."),
entry("UtilDll_LookupExact"),
vararg
]
HRESULT __stdcall LookupExact(
[out] LPVARIANT Result,
[in] LPVARIANTARG Table,
[in] LONG VarIndex,
[in] SAFEARRAY(VARIANT) Key,
[out, retval] VARIANT_BOOL *Found
);
我可以看到这个 VBA 的对象浏览器:
函数 LookupExact(Result, Table, VarIndex As Long, ParamArray Key() As Variant) As Boolean
因此,至少对象浏览器似乎将 Key 理解为 ParmArray () Variant。但是当我调用这个函数时,我得到一个编译错误,“编译错误:函数或接口标记为受限,或者函数使用了 Visual Basic 不支持的自动化类型”
我发现的最接近的问题如下,但是当我处理本机代码时,这种情况似乎特定于托管代码。 ParamArray 不适用于 COM
如何在具有 ParamArray 参数且可以通过 VBA 访问的本机代码中创建函数?