我有一个 xll (一个相当复杂的 c++ 项目)导出一个函数,由于历史原因,该函数需要大量参数,并且恰好是20。
这是一个神奇的数字:显然在 Excel 2003 中最多有 30 个参数(“在 Microsoft Office Excel 2003 中,任何函数可以采用的最大参数数量是 30,尽管大多数都少于这个。”),但是超过 20 功能无法注册在功能向导中注册。
现在,正如你可能猜到的那样,我被要求再添加3 个参数。好的,所以参数计数上升到 23(至少,这个函数不是为“人类消费”而设计的,而是总是由 VBA 包装器调用)。
通过使用 VC++ 调试器附加到 Excel 进程,我在注册时收到错误代码 4,它代表xlretInvCount。
我已确保逗号分隔的参数名称字符串短于 255 个字符。顺便说一句,我正在使用 xlw 4(我知道旧版本)。
所以,如果限制是 30,我希望能够通过调用我的函数
Application.Run("function name", ..... very long list of arguments)
但不要使用向导。麻烦的是VBA告诉我该函数没有注册。
那么,如何正确使用参数超过 20 个且少于 30 个的函数呢?
注意:请不要说显而易见的事情。我知道问题的真正症结在哪里。目前无法进行重构。