tempData = 50.2
用if a>40 and b<52 then程序通过
可是用Select Case语句
      Select Case tempData
        Case Is > 1, Is <= 10
          LinetypeScale = 0.1 
        Case Is > 10, Is <= 20
          LinetypeScale = 0.2
          
        Case Is >40,Is < 52
          LinetypeScale = 0.8
        
      End Select为什么只运行这一条语句
        Case Is > 1, Is <= 10
          LinetypeScale = 0.1 
根本不执行这条语句??
        Case Is >40,Is < 52
          LinetypeScale = 0.8

解决方案 »

  1.   

    Case 里面的逗号表示逻辑“或”,所以 (tempData > 1) Or (tempData <= 10) 始终为 True。
    如果 tempData 的数据类型是整数,那么可以用
          Select Case tempData 
            Case 2 to 10 
              LinetypeScale = 0.1 
            Case 11 to 20 
              LinetypeScale = 0.2 
              
            Case Is 41 to 51 
              LinetypeScale = 0.8 
            
          End Select 
      

  2.   


    Private Sub Command1_Click()
    Dim tempdata As Double
    Dim LinetypeScale As Double
    tempdata = 50.2
    '用if a>40 and b <52 then程序通过
    '可是用Select Case语句
          Select Case tempdata
            Case 1 To 10
              LinetypeScale = 0.1
            Case 10 = 20
              LinetypeScale = 0.2
              
            Case 40 To 52
              LinetypeScale = 0.8
            
          End Select'为什么只运行这一条语句
    '        Case Is > 1, Is <= 10
    '          LinetypeScale = 0.1
    '根本不执行这条语句??
    '        Case Is > 40, Is < 52
    '          LinetypeScale = 0.8End Sub
      

  3.   

    老鸟,我在网络上没有找到关于IS运算符的多少资料。比如要用Case Is > 1, Is <= 10 来判读,IS大于1,小于10,该怎么写??用了IS后,都不能用AND,OR等了 
      

  4.   

          Select Case tempData 
            Case 2 to 10 
              LinetypeScale = 0.1 
            Case 11 to 20 
              LinetypeScale = 0.2 
              
            Case Is 41 to 51 
              LinetypeScale = 0.8 
            
          End Select ,=or
      

  5.   

    你就可以理解为 Is 就是 tempData 的别名。
    这不就是“IS大于1,小于10”?
    是的,语法就是这样的。可以用 To 来指定范围,我1楼已经给出了。