2014-01-22 5 views
0

Моя проблема: он отлично работает, когда я вызываю его в SUb. Но это дает высокий скачок в значении «пФ» Я хочу дать условие, что пФ всегда меньше, чем dpdlold ... Я пробовал разные способы, но ничего не получалось ..нужна помощь в создании функции excel-vba

код начинается здесь:

Public Function pf(p, pwf, xf, PI, tau, n, k, wg, Hf, wf, Bg, dpdlold, mug, Bg_p, mug_p) 

Dim i, j As Integer 

Dim error As Double 

Dim pj As Double 

Dim pj1 As Double 

Dim pj0 As Double 

Dim e As Double 

j = 100 

i = 0 

error = 1000 

pj0 = dpdlold 

pj = pj0 

e = 0.001 


    While (error > e) And (i < j) 
     qgr = FrGas(tau, n, k, wg, Hf, wf, pj, mug_p) 
     pj1 = (p - pwf - 2 * qgr/PI)/xf 
     error = Abs(pj1 - pj) 
     pj = pj1 
     i = i + 1 
    Wend 
     pf = pj 


End Function 
+0

спасибо Я всегда делают эту ошибку ...... – user2981046

+1

пф всегда меньше, чем dpldld кроме случаев, когда, lkjwe мод rwerewrew дважды 987wewse3. Серьезно, хотя между вашим кратким описанием и более короткими именами переменных вы мешаете хотя бы одному человеку попытаться решить вашу проблему. Может быть, попробуйте упростить его на примере, который вы и другие могли бы проверить? –

+1

«Я пробовал разные способы» ... Я ничего не вижу, что показывает, что вы пробовали. Если бы вы могли быть немного более откровенными о своих «прыжках» и ваших «попытках», мы могли бы помочь лучше. – Floris

ответ

0

Как о смене цикла на что-то вроде этого:

While (error > e) And (i < j) 
    qgr = FrGas(tau, n, k, wg, Hf, wf, pj, mug_p) 
    pj1 = (p - pwf - 2 * qgr/PI)/xf 
    error = Abs(pj1 - pj) 
    if pj1 > dpdlold Then pj1 = dpdlold 
    pj = pj1 
    i = i + 1 
Wend 

Теперь, если pj1 становится слишком большим, это будет «обрезан» до значения dpdlold. Если он превзойдет предел дважды, «ошибка» в последующих оценках будет равна нулю, и она остановится.

С ограниченной информации Вы дали это лучшее, что я могу сделать ...

+0

он сделал значение постоянным в момент прыжка ..... – user2981046

+0

кстати я узнал одно, что если заявление можно написать без endif .... ..благодаря – user2981046

Смежные вопросы