vba工作表函数内存地址

时间:2015-04-30 06:12:53

标签: vba function excel-vba excel

我写了一个dll,它需要一个指向具有给定签名的函数的指针,比如说

function func(x as double) as double
...
end function

我可以在vba中编写这样的函数(比如Asinh)并使用 AddressOf ... vba方法传递它,它没有问题。

但是Asinh是Excel对象WorksheetFunction中已经存在的一个函数,我只是为了调用现有的函数而编写(很多)代理vba函数看起来很傻。直接传递此类工作表函数的地址会更好。但是:

  1. AddressOf不适用于(例如)WorksheetFunction.Asinh
  2. 我可以使用ObjPtr获取WorksheetFunction的地址,但是从那里我无法继续使用Asinh函数地址。
  3. 一个相关的问题是重用外部dll中定义的函数(具有相同的签名),但至少在这种情况下可以使用LoadLibrary / GetProcAddress解决它,排序

    function ExternalAddressOf (dllname, funcname) as LongPtr
    ....
    end function
    

    或者,在自己编写的dll的情况下,实现一个函数表并在vba符号常量中使用。但是,我真的希望能够重用已在WorksheetFunction中定义的函数。需要帮助。

0 个答案:

没有答案
相关问题