我通过 X 计算公式得到一个变量A,我把A用在了 Y 计算公式中,而 Y 的变动又会引起 X 的计算变化 ,有没有一个办法让我的A的值固定在第一次计算的结果上?由于某种原因,这些计算公式必须写在一个方法里面。

解决方案 »

  1.   

    如你的变量A值在第一次计算之后就需要固定,那还何须做以后的X计算呢:)你似应把X函数放在循环体外(前面)
      

  2.   

    Private Sub m_BillTransfer_GridChange(ByVal Col As Long, ByVal Row As Long, ByVal Value As Variant, ByVal bNewBill As Boolean, Cancel As Boolean)
     
        'TODO: 请在此处添加代码响应事件 GridChange
        Dim DouFauxqty As Double
        Dim DouFAuxQtyMust As Double
        Dim DouFDiscountAmt1 As Double
        Dim DouFDiscountAmt2 As Double
        Dim i As Long
        '这是为了获得值的,大家不用管
        i = Row   
        With m_BillTransfer
            DouFauxqty = Val(.GetGridText(i, m_Fauxqty))
            DouFAuxQtyMust = Val(.GetGridText(i, m_FAuxQtyMust))
            DouFDiscountAmt1 = Val(.GetGridText(i, m_FDiscountAmt1))
            DouFDiscountAmt2 = Val(.GetGridText(i, m_FDiscountAmt2))
            
        If DouFAuxQtyMust <> 0 Then
            a = (DouFDiscountAmt1 + DouFDiscountAmt2) / DouFAuxQtyMust
            b = DouFDiscountAmt1 / (DouFDiscountAmt1 + DouFDiscountAmt2)
        End If
        
        If m_Fauxqty = Col Then
            DouFDiscountAmt1 = a * DouFauxqty * b
            DouFDiscountAmt2 = a * DouFauxqty * (1 - b)
         '赋值
            .SetGridText i, m_FDiscountAmt1, DouFDiscountAmt1
            .SetGridText i, m_FDiscountAmt2, DouFDiscountAmt2
        End IfEnd With
    End Sub
      

  3.   

    搞定了,我定义个一个全局C。c = c + 1
        
        
        i = Row
        With m_BillTransfer
            DouFauxqty = Val(.GetGridText(i, m_Fauxqty))
            DouFAuxQtyMust = Val(.GetGridText(i, m_FAuxQtyMust))
            DouFDiscountAmt1 = Val(.GetGridText(i, m_FDiscountAmt1))
            DouFDiscountAmt2 = Val(.GetGridText(i, m_FDiscountAmt2))
            
        If DouFAuxQtyMust <> 0 And c = 1 Then
            a = (DouFDiscountAmt1 + DouFDiscountAmt2) / DouFAuxQtyMust
            b = DouFDiscountAmt1 / (DouFDiscountAmt1 + DouFDiscountAmt2)
        End If
      

  4.   

    恭喜!本来还想建议你设一个Static变量呢