使用VBA进行Z因子迭代

问题描述

我创建了带有两个子例程的表单按钮。 1.压力深度计算
2. Z因子计算

都是迭代。 (1)正常运行,而(2)未执行。

以下是代码

Sub PressureDepthCalculation()
    'Declaring Variables
    Dim i,t,row As Integer
    t = Range("B5").Value
    row = 11
    'For Loop
    For i = t To 0 Step -100
        'Depth caclculation
        Range("A" & row).Value = i
        'Pressure calculation
        Range("B" & row).Value = Range("F5").Value + 0.052 * Range("F6") * i
        row = row + 1
    Next i
End Sub
    
Sub ZFactorCalculation()
    'Z factor calculation
    Dim r1,r2,r3,r4,r5,ppc,tpc,ppr,tpr,fr,dfr,ddfr,rhor As Double
    Dim i,row,t As Integer
    t = 1
    row = 11
    Range("D6").Value = 10.731
    a1 = 0.3265
    a2 = 1.07 * -1
    a3 = 0.5339 * -1
    a4 = 0.01569
    a5 = 0.05165 * -1
    a6 = 0.5475
    a7 = 0.7361 * -1
    a8 = 0.1844
    a9 = 0.1056
    a10 = 0.6134
    a11 = 0.721

    For i = t To 100
        ppc = (4.6 + (0.1 * Range("H6").Value) - (0.258 * Range("H6").Value ^ 2) * 10.1325 * 14.7)
        tpc = (99.3 + (180 * Range("H6").Value) - (6.94 * Range("H6").Value ^ 2) * 1.8)
        ppr = 6760 / ppc
        tpr = Range("B6").Value / tpc
        rhor = 0.27 * ppr / tpr
        r1 = (a1 + (a2 / tpr) + (a3 / tpr ^ 3) + (a4 / tpr ^ 4) + (a5 / tpr ^ 5))
        r2 = ((0.27 * ppr) / tpr)
        r3 = (a6 + (a7 / tpr) + (a8 / tpr ^ 2))
        r4 = a9 * ((a7 / tpr) + (a8 / tpr ^ 2))
        r5 = (a10 / tpr ^ 3)
        fr = (r1 * rhor) - (r2 / rhor) + (r3 * rhor ^ 2) - (r4 * rhor ^ 5) + (r5 * (1 + (a11 * rhor ^ 2))) * (Exp(-a11 * rhor ^ 2)) + 1
        dfr = (r1) + (r2 / rhor ^ 2) + (2 * r3 * rhor) - (5 * r4 * rhor ^ 4) + (2 * r5 * rhor * (Exp(-a11 * rhor ^ 2)) * ((1 + (2 * a11 * rhor ^ 3)) - (a11 * rhor ^ 2 * (1 + (a11 * rhor ^ 2)))))
        ddfr = rhor - (fr / dfr)

        If Abs(rhor - ddfr) <= 0.000000000001 Then
            Range("I" & r).Value = (0.27 * ppr) / (rhor * tpr)
        Else
            rhor = ddfr


End If

此外,当在(1)中计算Range(“ B”&row).value时,我想用它代替(2)中的6760来计算ppc。

解决方法

您的第二个循环似乎没有继续该循环的指令。

您可以执行以下操作:

For i = t To 100 **Step someNumber** 'The -Step- argument was used in loop 1,but was omitted in loop 2

或者这个:

For i = t To 100
    'the rest of your code here
**Next i** 'will increment i by 1

欢迎使用StackOverflow:)