这是我写的一段代码:
  Dim fChkSum, fSum As Double  For iCount = iRow To iRowCount
    fSum = ActiveSheet.Range(sColumn_Sum & iCount).Value
    fChkSum = ActiveSheet.Range("F" & iCount).Value + _
      ActiveSheet.Range("G" & iCount).Value + _
      ActiveSheet.Range("H" & iCount).Value
          
    If fSum <> fChkSum Then
      iAns = MsgBox("不等")
    End If
  Next iCount作用是检查两个变量是否相等,但奇怪的是对某些行,fSum,fChkSum明明相等,比如说在监视中两个都等于3.5,fSum <> fChkSum却成立!!!???真是........请大家帮帮忙,谢谢!!!

解决方案 »

  1.   

    有可能是浮点运算的问题。 jisheng(古朴的狼)的建议很好。
    然后你的声明也好像有点问题: Dim fChkSum , fSum As Double->Dim fChkSum As Double, fSum As Double
    还不行的话,记得微软承认在VBA里有数据精度方面的问题,建议: Dim fChkSum As Currency, fSum As Currency
      

  2.   

    是啊
    建议不要在VB中这样声明多个变量
    Dim I, J, K As Integer
    这样声明以后,K倒是被声明为所期望的整型
    而I,J却是被默认为Variant不过这种令人迷惑的情形在VB.NET中已经得到改变
    效果就像和C/C++中声明变量的一样
    int i, j, k //i, j, k都是整型变量
    Dim I, J, K As Integer //I,J,K都是整型变量(VB.NET中)
      

  3.   

    解决了,问题是出在fSum - fChkSum = -1.4210854715202E-14,同时变量的声明也有问题,谢谢各位!