Excel2013 64ビット VBA から VisualC++2013で作成した 64ビットDLLをコールしていますが、正常に動作していた関数の引数を
1個増やしてDLLをリコンパイルし、VBA側もこれに合わせて修正して実行すると異常終了します。
引数を増やした関数名を「新しいものに変更」すると正常に動作します。つまり、一度動作した関数は、同じ名前ではインタフェースを変更
できないかのような動きとなります。C++で作成したアプリからコールする場合は、リコンパイルすれば、同じ名前でも当然正常になります。
VBAが記述されている.xlsmファイルからモジュールを一旦解放エクスポートし、モジュールなしの状態で更新後、再度、モジュールをインポートすることによって、正常に戻ります。ということで、最初のインタフェース情報が、何らかの形で.xlsmファイルに残ってしまうようです。やはり、Excel2013 64ビットのソフトウェア不良ではないでしょうか? 32ビットではこのような問題は発生しません。
開発中は、変更することは頻繁にありますので、根本的な対策をお願い致します。
以上