我做一个关于土地评价的软件,用到Select Case 语句判断多个指标不同范围下所处的级别,然后再根据各水平综合计算,但现在多个Select Case 语句块一起运行出现错误,而单一一个Select Case 是可以的。想请问大家一下是什么原因?非常期待各位朋友的解答,赐教。

解决方案 »

  1.   

    呵呵,是运行时总是说调试有误啊,
    我的代码有8块,前两块如下:请这位朋友麻烦看一下,万分感谢!
    Select Case phtemp
    Case Is > 8.5
    uph(6) = 1
    uph(1) = 0
    uph(2) = 0
    uph(3) = 0
    uph(4) = 0
    uph(5) = 0Case Is > 7.5
    uph(4) = Abs(phtemp - 8.5) / Abs(7.5 - 8.5)
    uph(5) = Abs(phtemp - 7.5) / Abs(7.5 - 8.5)
    uph(1) = 0
    uph(2) = 0
    uph(3) =0
    uph(6) = 0Case Is > 6.5
    uph(3) = Abs(phtemp - 7.5) / Abs(6.5 - 7.5)
    uph(4) = Abs(phtemp - 6.5) / Abs(6.5 - 7.5)
    uph(1) = 0
    uph(2) = 0
    uph(5) = 0
    uphp(6) = 0
    Case Is > 5.5
    uph(2) = Abs(phtemp - 6.5) / Abs(5.5 - 6.5)
    uph(3) =Abs(phtemp - 5.5) / Abs(5.5 - 6.5)
    uph(1) = 0
    uph(4) = 0
    uph(5) = 0
    uph(6) = 0
    Case Is > 4.5
    uph(1) = Abs(phtemp - 5.5) / Abs(4.5 - 5.5)
    uph(2) = Abs(phtemp - 4.5) / Abs(4.5 - 5.5)
    uph(3) = 0
    uph(4) = 0
    uph(5) = 0
    uph(6) = 0
    Case Else
    uph(1) = 1
    uph(2) = 0
    uph(3) = 0
    uph(4) = 0
    uph(5) = 0
    uph(6) = 0
    End Select  'ph识别Select Case catemp
    Case Is > 15
    uca(6) = 1
    uca(1) = 0
    uca(2) = 0
    uca(3) = 0
    uca(4) = 0
    uca(5) = 0Case Is > 5
    uca(4) = Abs(catemp - 15) / Abs(15 - 5)
    uca(5) = Abs(catemp - 5) / Abs(15 - 5)
    uca(1) = 0
    uca(2) = 0
    uca(3) =0
    uca(6) = 0Case Is > 3
    uca(3) = Abs(catemp - 5) / Abs(5 - 3)
    uca(4) = Abs(catemp - 3) / Abs(5 - 3)
    uca(1) = 0
    uca(2) = 0
    uca(5) = 0
    uca(6) = 0
    Case Is > 1
    uca(2) = Abs(catemp - 3) / Abs(3 - 1)
    uca(3) = Abs(catemp - 1) / Abs(3 - 1)
    uca(1) = 0
    uca(4) = 0
    uca(5) = 0
    uca(6) = 0
    Case Is > 0.25
    uca(1) = Abs(catemp - 1) / Abs(1 - 0.25)
    uca(2) = Abs(catemp - 0.25) / Abs(1 - 0.25)
    uca(3) = 0
    uca(4) = 0
    uca(5) = 0
    uca(6) = 0
    Case Else
    uca(1) = 1
    uca(2) = 0
    uca(3) = 0
    uca(4) = 0
    uca(5) = 0
    uca(6) = 0
    End Select  'ca识别Dim i As Integer
    For i = 1 To 6
    Print uph(i)
    Print uac(i)
    Next iEnd Sub
      

  2.   

    格式没问题,但:
    uphp(6) = 0 是不是uph(6) = 0之误?Print uac(i)是不是Print uca(i)之误?
      

  3.   

    这就能运行:
    Private Sub Form_Load()
    Form1.Show
    Dim phtemp, catemp As SingleDim uph(1 To 6)
    Dim uca(1 To 6)
    Randomize
    phtemp = 10 * Rnd
    catemp = 10 * RndSelect Case phtemp
    Case Is > 8.5
    uph(6) = 1
    uph(1) = 0
    uph(2) = 0
    uph(3) = 0
    uph(4) = 0
    uph(5) = 0Case Is > 7.5
    uph(4) = Abs(phtemp - 8.5) / Abs(7.5 - 8.5)
    uph(5) = Abs(phtemp - 7.5) / Abs(7.5 - 8.5)
    uph(1) = 0
    uph(2) = 0
    uph(3) = 0
    uph(6) = 0Case Is > 6.5
    uph(3) = Abs(phtemp - 7.5) / Abs(6.5 - 7.5)
    uph(4) = Abs(phtemp - 6.5) / Abs(6.5 - 7.5)
    uph(1) = 0
    uph(2) = 0
    uph(5) = 0
    uph(6) = 0
    Case Is > 5.5
    uph(2) = Abs(phtemp - 6.5) / Abs(5.5 - 6.5)
    uph(3) = Abs(phtemp - 5.5) / Abs(5.5 - 6.5)
    uph(1) = 0
    uph(4) = 0
    uph(5) = 0
    uph(6) = 0
    Case Is > 4.5
    uph(1) = Abs(phtemp - 5.5) / Abs(4.5 - 5.5)
    uph(2) = Abs(phtemp - 4.5) / Abs(4.5 - 5.5)
    uph(3) = 0
    uph(4) = 0
    uph(5) = 0
    uph(6) = 0
    Case Else
    uph(1) = 1
    uph(2) = 0
    uph(3) = 0
    uph(4) = 0
    uph(5) = 0
    uph(6) = 0
    End Select  'ph识别Select Case catemp
    Case Is > 15
    uca(6) = 1
    uca(1) = 0
    uca(2) = 0
    uca(3) = 0
    uca(4) = 0
    uca(5) = 0Case Is > 5
    uca(4) = Abs(catemp - 15) / Abs(15 - 5)
    uca(5) = Abs(catemp - 5) / Abs(15 - 5)
    uca(1) = 0
    uca(2) = 0
    uca(3) = 0
    uca(6) = 0Case Is > 3
    uca(3) = Abs(catemp - 5) / Abs(5 - 3)
    uca(4) = Abs(catemp - 3) / Abs(5 - 3)
    uca(1) = 0
    uca(2) = 0
    uca(5) = 0
    uca(6) = 0
    Case Is > 1
    uca(2) = Abs(catemp - 3) / Abs(3 - 1)
    uca(3) = Abs(catemp - 1) / Abs(3 - 1)
    uca(1) = 0
    uca(4) = 0
    uca(5) = 0
    uca(6) = 0
    Case Is > 0.25
    uca(1) = Abs(catemp - 1) / Abs(1 - 0.25)
    uca(2) = Abs(catemp - 0.25) / Abs(1 - 0.25)
    uca(3) = 0
    uca(4) = 0
    uca(5) = 0
    uca(6) = 0
    Case Else
    uca(1) = 1
    uca(2) = 0
    uca(3) = 0
    uca(4) = 0
    uca(5) = 0
    uca(6) = 0
    End Select  'ca识别Dim i As Integer
    For i = 1 To 6
    Print uph(i)
    Print uca(i)
    Next i
    End Sub
      

  4.   


    我也觉得是这个问题。
    楼主把代码贴出来后,我复制过去一试,就发现那两个地方不对。
    更改后完全正常。可惜不知道 ISP 那儿出了什么问题,无法回复~~~~~
    -_-!
      

  5.   


    Select语句的选项怎么能使条件判断语句?只能是:字符、数字
      

  6.   

    格式没问题,但: 
    uphp(6) = 0 是不是uph(6) = 0之误? Print uac(i)是不是Print uca(i)之误?