1

歴史的な理由から、多数の引数、正確には20を取る関数をエクスポートする xll (かなり複雑な C++ プロジェクト) があります。

これはマジックナンバーです。明らかに、Excel 2003 では引数の最大数が 30 になっています (「Microsoft Office Excel 2003 では、関数が使用できる引数の最大数は 30 ですが、ほとんどの関数はこれよりも少なくなります」)。 20 を超える関数は関数ウィザードに登録できません。

さて、ご想像のとおり、さらに 3 つの引数を追加する必要があります。わかりましたので、引数の数は最大 23 になります (少なくとも、この関数は「人間が消費する」ことを意図したものではなく、常に VBA ラッパーによって呼び出されます)。

VC++ デバッガーを使用して Excel プロセスにアタッチすると、登録時にxlretInvCountを表すエラー コード 4 が表示されます。

コンマで区切られた引数名の文字列が255 文字未満であることを確認しました。ところで、私はxlw 4を使用しています(古いバージョン、私は知っています)。

したがって、制限が 30 の場合、次の方法で関数を呼び出すことができると期待しています

Application.Run("function name", ..... very long list of arguments) 

ただし、ウィザードを使用しないでください。問題は、関数が登録されていないことを VBA が教えてくれることです。

では、引数が 20 個以上 30 個未満の関数を適切に使用するにはどうすればよいでしょうか。

注意: 明白なことを述べるのは控えてください。問題の真の核心はどこにあるのか、私は知っています。現時点ではリファクタリングはできません。

4

1 に答える 1