Sub dcpp_click() 'RESULT=PI*DATA1*DATA1*DATA2*DATA3/4 ' Dim DBL_INOUT(0 To 3) 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 = 1 c = 1 bdone = False Dim addata() As Double With ThisWorkbook.Sheets("Sheet1") Do While Not bdone r = r + 1 If .Cells(r, c).Value = "" Or r > 10 Then bdone = True Loop rend = r - 1 ' ReDim addata(0 To rend - 2, 0 To 3) For i = 0 To rend - 2 addata(i, 0) = .Cells(i + 2, c + 1).Value addata(i, 1) = .Cells(i + 2, c + 2).Value addata(i, 2) = .Cells(i + 2, c + 3).Value 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 - 2 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) Call DF0(DBL_INOUT) .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 For i = 0 To rend - 2 addata(i, 3) = 0 Next i lr = xlat2d_SafeArray(addata) l2 = lr For i = 0 To rend - 2 .Cells(i + 2, 9).Value = addata(i, 3) addata(i, 3) = 0 ' prepare to call fcad Next i Call DFAD(addata) For i = 0 To rend - 2 .Cells(i + 2, 10).Value = addata(i, 3) Next i End With End Sub