VBA / Excel / Refprop(第一次工作,而不是第二次)

我正在尝试,并取得有限的成功,使Excelfunction,可以使用RefProp的dll和计算。 我有下面的代码:

Public Function enthalpy(t, p) Dim hRef As Double: Dim sRef As Double: Dim Tref As Double: Dim pref As Double Dim nc2 As Long Dim i As Integer Dim xtemp(1 To MaxComps) As Double hmxnme = "C:\Program Files (x86)\REFPROP\Mixtures\R404A.MIX" hfmix = "C:\Program Files (x86)\REFPROP\fluids\hmx.bnc" nc2 = 0 ierr = 0 herr = "" For i = 1 To MaxComps: xtemp(i) = 0: Next hRef = 0: sRef = 0: Tref = 0: pref = 0 Call SETMIXdll(hmxnme, hfmix, hrf, nc2, hfld, xtemp(1), ierr, herr, 255&, 255&, 3&, 10000&, 255&) Call SETREFdll(hrf, 2&, x(1), hRef, sRef, Tref, pref, ierr2, herr2, 3&, 255&) 'Zero variables apart from T and P q = 0: d = 0: Dl = 0: Dv = 0: e = 0: h = 0: s = 0: Cvcalc = 0: Cpcalc = 0: w = 0 nc = 3 For i = 1 To nc xliq(i) = 0: xvap(i) = 0 Next For i = 1 To 3: x(i) = xtemp(i): Next Call TPFLSHdll(t, p, x(1), d, Dl, Dv, xliq(1), xvap(1), q, e, h, s, Cvcalc, Cpcalc, w, ierr, herr, 255&) enthalpy = h / 97.6037985507645 End Function 

这是第一次被调用,但没有其他时间。 除非当然我打vba中的重置button,然后再使用公式=焓(278,1500)的单元格再次调用代码。 我打印了发送给dll的参数,每次都是一样的。

从TPFLSHdll调用,所有返回的值,直到并包括q,总是相同的,无论多less次我调用函数没有重置。 e到w的值在我第一次调用这个函数的时候是正确的,然后是不正确的第二,第三,第四等时间,但是它们保持不变。

我有其他function使用类似的代码,但不同的DLL工作正常。 我不太清楚,如果使用所有相同的参数来调用一个不同的值,除非它与另一个仅在第一次运行时发生变化的值相关联,然后保持不变,然后将其计算出来。 这个神秘的价值是通过重置“清除”,所以我的function再次工作。

很显然,我希望它能够正常工作,因为没有必要让自动化的东西成千上万次循环,而不得不每次都手动按下一个复位button,其次我觉得我正在做一个巨大的根本性的明显的错误,真的应该发现。

我意识到我正在询问一个niché程序,但是我知道这个错误必须存在于我input的一行代码中,所以任何帮助都将非常值得赞赏。