Public Function sb(ByVal ad As Integer)
sb = (6400 - 900) * ad / 1000 / 设置坐标量程.Text1.Text + 900
End Function输入参数时,设置坐标量程.Text1.Text =1
总提示错误6溢出错误,怎么回事啊??
多谢了!!!!!!!!!!!!!!

解决方案 »

  1.   

    Public Function sb(ByVal ad As Integer) As Double
    sb = (6400 - 900) 
    sb = sb * ad
    sb = sb / 1000 / 设置坐标量程.Text1.Text + 900
    End Function
      

  2.   

    你的Function没有设置类型,应该设置为Double类型的。
      

  3.   

    楼上不要误导,variant可以存储任何类型其实是
    (6400 - 900) * ad
    这个表达式溢出
    因为三个都是Integer,表达式的临时运算结果是放在Integer型里面
    而相乘结果超出了Integer的范围(好像是-32,768 到 32,767)
    只要三个任一个改为Long就会使表达式为Long
    6400与900默认都是用Integer,加个表示Longde后缀也是可以的
      

  4.   

    dim sb as LongPublic Function sb(ByVal ad As  Long)
    sb = (6400 - 900) * ad / 1000 / 设置坐标量程.Text1.Text + 900
    End Function
      

  5.   

    Public Function sb(ByVal ad As  Long) as long 
    sb = (6400 - 900) * ad / 1000 / val(设置坐标量程.Text1) + 900
    End Function
      

  6.   

    Public Function sb(ByVal ad As Integer)
    sb = CLng(6400 - 900) * ad / 1000 / 设置坐标量程.Text1.Text + 900
    End Function
      

  7.   

    sb = (6400 - 900) * ad / 1000# / 设置坐标量程.Text1.Text + 900
      

  8.   


    (6400 - 900) * ad 溢出
    你先声明一个Double变量
    然后用它保存(6400 - 900) * ad 的结果再操作
      

  9.   

    应该是溢出了
    up
    jf
      

  10.   

    sb = (6400 - 900) * ad / 1000 /cLng(设置坐标量程.Text1.Text) + 900