3

CalculateHours(work_hour, rest_hour)我想在像 Works.xla 这样的插件中向 Excel VBA 注册一种函数

我尝试使用Application.MacroOptions来注册该功能。以下代码在一个Class文件中,函数在另一个模块文件中。当我们打开 Excel 和插件时,它们会加载。

代码:

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 个函数,每次加载插件时都需要将它们自动添加到 Excel 函数向导中。

4

2 回答 2

6

2016 年 7 月 12 日,在遵循一些帖子的建议并做了一些其他无意义的事情之后,我发现如果 Application.MacroOptions Description:=FuncDesc 超过 255 个字符,则会发生此错误。所以基本上不要对用户定义函数的描述过于冗长,或者只是添加一个

如果 Len(FuncDesc) > 255 那么关于运行时错误 '1004' 的可怕警告消息 End if

于 2016-07-12T21:04:23.370 回答
1

我知道这个问题很老,但会发布我对此错误的解决方案,因为它可能很常见并且异常消息没有提供信息。
我通过将宏/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()
于 2020-09-04T08:21:08.950 回答