ExcelのVBAから関数をDLLから呼び出そうとしています。このようなExcel VBAからのDLL関数呼び出しのトラブルシューティング
マイエクセルVBAマクロルックス:
Declare PtrSafe Function TestFunction1 Lib "mylib.dll" (ByVal k As Double) As Double
Public Function TestDll(k As Double) As Double
Debug.Print ("Start")
Dim r As Double
r = TestFunction1(k)
Debug.Print ("Got result of " + r)
Debug.Print ("Done")
TestDll = r
End Function
今
私は "= TestDll(3.0)" のようなものでExcelのセルからそれを呼び出したとき、それは動作しません。私は、直接のウィンドウに "Start"という文字列を表示しますが、それ以外は表示されません。 「TestFunction1」が呼び出されているときにエラーが発生しているようです。 Excelに「#VALUE」と表示されます。細胞内で
デバッガでブレークポイントを設定することもできますが、TestFunction1呼び出しに到達すると終了します。私が見つけることができるエラーメッセージの種類はありません。
私の質問は、これをどのようにデバッグするのですか?エラーメッセージは表示されません。単に機能しません。どうやって間違っているのか分かりますか?
なぜ私はdownvotedになっていますか?私はこの問題を本当に苦労しています。私は最初にそれを研究しようとしました。私はどこに行くのか分からない。 – carrie88
あなたは決して 'r'に値を割り当てません。そしてあなたは決してダブルとして 'ret'を宣言していません。 (それらがあなたの問題を引き起こしているかどうかは確かではありませんが、とにかく解決することをお勧めします) – YowE3K
VBAプロジェクト参照に.dllファイルを追加し、オブジェクトエクスプローラでメソッドを検索するためにF2を試すことができます。あなたが試みることができる別のものは 'As Double'の代わりに' As Object'を使うことです。私は 'mylib.dll'と' TestFunction1'についての情報がなくてもあなたを助けることはできないと思っています – Slai