Excel で使用できる dll ファイルを作成しましたが、特定の状況でスプレッドシートがクラッシュします。誰かが私を助けてくれれば幸いです。
私が使用している C++ コードは次のとおりです: (大部分は C++ パッケージ QuantLib から借用)
long __stdcall nextBusinessDay_C(long todaySerial) {
Date today(todaySerial);
UnitedStates us(UnitedStates::NYSE);
return (long)(us.advance(today,1,Days).serialNumber());
}
Excelには、次のVBAコードがあります
Declare Function yz_nextBusinessDayUS_NYSE_C Lib _
"c:\lib\myExcelFile.dll" _
(ByVal ds As Long) As Long
Function nextBizDayUS(d As Date) As Date
nextBizDayUS = nextBusinessDayUS_C(CLng(d))
End Function
今、Excelで、私が使用するだけの場合:
//This works perfectly fine
A1: 1/1/2013 B1: =nextBizDayUS(A1)
A2: 1/2/2013 B2: =nextBizDayUS(A2)
A3: 1/2/2013 B3: =nextBizDayUS(A3)
... ...
このように何千行も問題なく書き続けることができます。ただし、ある関数の出力を別の関数の入力として使用すると、Ctrl+Alt+F9 を押すたびに Excel がクラッシュします。
//This crashes every time when I hit Ctrl+Alt+F9!!!
A1: 1/1/2013
A2: =nextBizDayUS(A1)
A3: =nextBizDayUS(A2)
私の C++ ライブラリで使用しているソース コードは QuantLib パッケージとまったく同じです (私は自分のコードを売り込むのではなく、このパッケージを学習しようとしているだけです)。
私はこれに何日も悩まされています。うまくいけば、誰かが私を助けることができます。
前もって感謝します。