Application.MacroOptions
(VBA6) (VBA7) 提供函数描述,但是这些信息实际上不会出现在工具提示中,因此不能解决我的问题。
目标
我们所有人都希望能够通过任何方式(VBA、VSTO 或 COM 加载项)定义自定义函数,并为用户提供函数及其参数的弹出/工具提示描述,就像内置的 Excel 函数一样,可以在行内或公式栏中显示:
这个需求的普遍答案是自定义函数不可能实现,但我希望挑战这种看法。问题:
目前,我见过的最好的方法是定义函数(通常使用上面的MacroOptions调用),这样在打开函数对话框时(公式栏中的fx按钮),它们的函数和参数描述显示如下:
正如您所看到的,这是一个具有许多参数的复杂函数。如果用户不了解“函数参数”对话框以及如何调出它,并且只熟悉Excel的标准工具提示,则他们只能看到公式名称而没有其他帮助:
他们无法正确提供所需的参数(当然,没有用户会去阅读文档)。现在,高级用户可能知道通过键入Ctrl + Shift + A,可以获得自动完成的函数参数列表,如下所示: 当然,我们面临的问题与上述相同,即标准的Excel用户只会使用第一张图片中的默认行为,并且可能永远不会学习该功能。到这个地步应该很清楚了,这还不够,我们想要每个内置函数都有的 - 内联工具提示,告诉用户如何使用该函数。
起初,我可能会相信除了原生Excel应用程序函数外,这根本不可能实现。插件和VBA是可扩展性特性,而此工具提示可能无法扩展。但是,分析工具包插件的存在挑战了这一理论。当然,它是由Microsoft构建的,但是ANALYS32.xll是一个独立的XLL插件,就像可以在VB、C、C++和C#中生成的插件一样。果然,当这个XLL加载到应用程序中时,它提供的functions具有与本机Excel函数相同的工具提示: 如果这些信息以某种方式编码在XLL文件中并传递给Excel,那么我们自己的Add-ins也可以复制它们吗?我现在已经到了开始自学一些反编译的地步,看看能否反向工程分析工具包中正在进行的操作。
如何帮助:
我几乎可以确定我已经研究了所有公开可用的有关此问题的信息。如果有人知道我不知道的可能有助于解决此问题的内容,请随时发表意见。我对反向工程编译的dll / xll非常陌生,因此如果有人感觉像打开他们本地的Analysis32.xll并找出其自定义函数定义的内容,我将不胜感激。否则,我将继续自己挖掘,直到遇到所有死路并回报我的发现。