在Excel中使用别名“ MAX”调用DLL函数

问题描述 投票:0回答:1

我的别名中有一个函数,别名为“ MAX”。

然后我尝试通过Excel文档中的VBA使用它:

  • 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
  • Excel文件中的单元格值:

=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
excel vba dll xls
1个回答
1
投票
[从头开始,我建议您在VBA-Module中创建一个公共函数,然后在Excel-Cell中调用它。

说,您要调用=MyMax(...),以便使用DLL中的功能。然后,您需要执行以下两个简单步骤:


    使用
  1. 插入➡️模块添加一个模块(如果尚不存在)>>
  2. 在此模块内
  3. ,请创建一个public函数,如下所示: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
© www.soinside.com 2019 - 2024. All rights reserved.