为 Excel 自定义函数添加帮助信息

作者: , 共 919 字

1. 函数列表界面显示选中函数的说明信息

效果图:

image 实现方式:

Application.MacroOptions(Macro:="UDFtest", Description:="UDFtest Description ...",

需要自动注册的话,可以将上述代码写在 Workbook_Open 事件里面。

另一种方法在 VBE 界面,按 F2 调出「对象浏览器」,搜索函数,右键点击对应函数的「属性」菜单,在对话框内输入函数的说明信息。

2. 输入参数界面显示函数帮助信息和各个参数的说明信息

实现效果:

image实现方法:

实现此功能最早应该是 Laurent Longre 提出的,其思路「伪造」一个 DLL 函数:

XL97 有一个特性:假设你已经有一个名为 MyFunc 的自定义函数,然后向 Excel 注册一个同名的 DLL 函数。那么当在 VBA 或者 Excel 里调用 MyFunc 函数时,它会直接调用 VBA 中自定义的函数,但是在插入函数的窗口,它显示的是注册的 DLL 函数的信息

故可以在 Excel 工作簿文件打开时,自动注册同名的 DLL 函数,并提供函数的说明信息、参数信息和分类,这些信息将被显示在选择函数的窗口。

只有工作表函数为 Private 时,自定义函数才不会显示在 User Defined 类别下,否则它可能会同时出现在两个以上的类别中。

但直接使用 Laurent 提供的办法有一个缺陷,其直接依赖的 REGISTER 和 ExecuteExcel4Macro 函数的输入字符串的长度必须在 255 以下,这对于函数说明较长或者有较多的函数参数时便不够用了。所以建议直接使用下面这篇文章中的改进的方法和代码(提供了样例程序和函数,可直接使用)

Registering A User Defined Function With Excel

3. 直接输入函数时,显示函数简单说明和提示函数参数信息

实现效果:

image image

实现方式:

Excel 自带的工作表函数有这些效果,在输入函数名时提示函数用途,在准备输入参数时,提示参数名和类型。但目前还没找到实现的方式。

Q. E. D.

类似文章:
编程 » Excel, VBA
无意中发现一个 Excel VBA 对待参数的一个"不正常"现象。这种处理方式可能无意中导致程序结果错误,而且你很难发现你的错误所在:
Excel 多表合并和查询是一个应用很广泛的问题。下面是一个简单的例子,我们需要从两张数据表里,得出每个行业的股票波动率平均值。第一个数据表保存了股票和行业的对应关系,有两列,第一列为股票名,第二列为每只股票对应的行业。第二张表保存了各个股票在各个交易日的收盘价和前收盘价,有四列,第一列是股票名,第二列为交易日,第三列和第四列分别为股票在这个交易日的前收盘价和收盘价。
编程 » Excel, VBA
某些时候需要打开 Excel 文件来获取或者写入数据,但又不希望跳出打开的 Excel 文件窗口,可以用下面的代码:
编程 » dll, Matlab, VB
这里放两个在实际工作中遇到的问题,还没找到解决的方法,向广大网友求助。
相似度: 0.099
编程 » Excel, VBA
Excel VBA 出错时给出的错误信息极少,需要充分利用各种工具来进行调试。
编程 » Excel, VBA
VBA 的 Date 类型比较奇怪。
时间管理中有重要的一条,保持你的收件箱整洁、干净。Gmail 一个重要的创新就是 Archive (存档),选中邮件后点下「archive」按钮或者按一下快捷键 y ,邮件就被移出收件箱,但又跟删除邮件不一样,这些邮件还可以继续被搜索。这里讲最近写的如何在 Outlook 里实现这个功能。
编程 » Excel, lotus, VBA
公司使用 Lotus ,我每天都通过 Excel 编写 VBA 代码自动调用 Lotus 发送邮件,发现一个奇怪的现象。一般我们通过下面的 VBA 代码指定邮件收件人:
编程 » Excel, VBA
最近学到一招,效果不错~
2014-03-25 更新:我已经将该类修改成函数形式,并增加新功能,参见更新 Excel 的数据库查询函数库
编程 » Excel, VBA
某些时候需要打开 Excel 文件来获取或者写入数据,但又不希望跳出打开的 Excel 文件窗口,可以用下面的代码:
在工作中定期或不定期会收到一些数据文件,然后要将它们的附件保存到自己的电脑上,下面演示如何让 Outlook 自动做这件事情。