我想在Excel中注册一个函数CalculateHours(work_hour, rest_hour)
到Excel VBA,像Adds.xla这样的Addin
我尝试使用Application.MacroOptions
注册该功能。以下代码位于Class
文件中,该函数位于另一个模块文件中。当我们打开Excel和Addin时会加载它们。
代码:
Private Function AddFunctions()
With MyFunction
Application.MacroOptions .Name, _
.Description, , , , , .Category, , , .HelpFilePath
End With
End Function
期望:
我想获得参数帮助,Excel函数向导中的函数描述作为其他内置函数。使用帮助按钮链接到我的帮助文件。
结果:
Error number: 1004 Application-defined or object-defined error
或
Method "MacroOptions" of object "_Application" failed
有什么(或一切)都错了吗?
我有10种功能,每次加载Addin时都需要自动添加到Excel功能向导。
答案 0 :(得分:3)
07/12/2016很好地将我的函数拖到一些帖子中的一些建议并做了许多其他毫无意义的事情后,我发现如果Application.MacroOptions描述:= FuncDesc超过255个字符会发生此错误。所以基本上不要对用户定义函数的描述过于冗长,或者只是添加一个
如果Len(FuncDesc)> 255然后 关于运行时错误'1004'的可怕警告消息 如果
结束答案 1 :(得分:0)
我知道这个问题很旧,但是会针对这个错误发布我的解决方案,因为它可能很常见,并且异常消息没有提供信息。
通过将宏/ UDF持有人的工作簿名称传递到“宏”参数,例如“'Workbook.xls(x / m / b)'!Macro / UDF_Name”,来解决该问题:
' Adding a macro from Personal.xlsb
Application.MacroOptions _
Macro:="'PERSONAL.xlsb'!Macro/UDF_Name", _
Description:="Description", _
ArgumentDescriptions:=ArgumentsDescription()