Option Base 0 Sub df0_click() 'RESULT=PI*DATA1*DATA1*DATA2*DATA3/4 ' Dim DBL_INOUT(4) As Double ' Dim PI As Double PI = WorksheetFunction.PI() Dim D0, D1, D2, D3 As Double Dim bdone As Boolean Dim r As Long, c As Long r = 2 c = 1 bdone = False Dim addata(10, 4) As Double With ThisWorkbook.Sheets("Sheet1") Do While Not bdone If .Cells(r, c).Value = "" Then bdone = True Else addata(r - 2, 0) = .Cells(r, c + 1).Value addata(r - 2, 1) = .Cells(r, c + 2).Value addata(r - 2, 2) = .Cells(r, c + 3).Value r = r + 1 End If If r > 10 Then bdone = True Loop rend = r For i = 0 To rend - 3 addata(i, 3) = PI * addata(i, 0) * addata(i, 0) * addata(i, 1) * addata(i, 2) / 4 .Cells(i + 2, 5).Value = addata(i, 3) Next For i = 0 To rend - 3 DBL_INOUT(0) = addata(i, 0) DBL_INOUT(1) = addata(i, 1) DBL_INOUT(2) = addata(i, 2) DBL_INOUT(3) = 0 D0 = addata(i, 0) D1 = addata(i, 1) D2 = addata(i, 2) D3 = 0 Call DF1(DBL_INOUT, 4) .Cells(i + 2, 6).Value = DBL_INOUT(3) Dim dr As Double Call DF2(D0, D1, D2, D3, 4) .Cells(i + 2, 7).Value = D3 dr = -1 Call xlat_SafeArray(DBL_INOUT(), dr) .Cells(i + 2, 8).Value = DBL_INOUT(3) Next End With End Sub