我的别名中有一个函数,别名为“ MAX”。
然后我尝试通过Excel文档中的VBA使用它:
Declare PtrSafe Function MAX_impl Lib "model_64.dll" Alias "MAX" (x As Variant, ByVal idx_f As Integer, out As Variant) As Integer
=MAX(B2:B3, 1)
但是不是从我的DLL函数中调用,而是从Excel中调用了MAX函数。有没有一种方法可以指定应该对DLL执行调用?也许可以添加一些前缀?
赞:
=<prefix>.MAX(B2:B3, 1) # call to DLL function
对我有用的解决方案:我最后得到了这个前缀-Module1
所以我在Excel文件中写:
=Module1.MAX(B2:B3, 1) # this actually calls my DLL function
说,您要调用=MyMax(...)
,以便使用DLL中的功能。然后,您需要执行以下两个简单步骤:
Public Function MyMax(x As Variant, ByVal idx_f As Integer, out As Variant) As Integer
MyMax = Max(x, idx_f)
End Function
这可让您创建可以从电子表格调用的功能MyMax
。反过来,这只是充当从DLL调用实际函数并将其值返回到单元格的代理。
注:
我尚未测试过,但我想您最好为函数加上别名i)“ Max”以外的名称,以免与内置函数混淆; ii。代理功能也可以避免与此混淆。关于如何创建这样的用户定义功能的更多详细说明,请参见here。