标题:关于Elseif多级条件选择
只看楼主
ygxshanghai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-3-3
结帖率:100%
已结贴  问题点数:5 回复次数:1 
关于Elseif多级条件选择
Option Explicit
Dim BMoney As Double

Private Sub Text2_Change()
If 20 > Val(Text2) > 0 Then
      BMoney = 5000
      Label16 = "20㎡以下,计:" & BMoney & "元"
  ElseIf 100 > Val(Text2) >= 20 Then
      BMoney = 10000
      Label16 = "20㎡(含)-100㎡,计:" & BMoney & "元"
  ElseIf 200 > Val(Text2) >= 100 Then
      BMoney = 15000
      Label16 = "100㎡(含)-200㎡,计:" & BMoney & "元"
  ElseIf 500 > Val(Text2) >= 200 Then
      BMoney = 20000
      Label16 = "200㎡(含)-500㎡,计:" & BMoney & "元"
  Else
      BMoney = 30000
      Label16 = "500㎡(含)以上,计:" & BMoney & "元"
End If
End Sub

'问题:当输入Text2为10时,结果为30000,即跳到“500㎡(含)以上”这档,而不是5000的"20㎡以下”这档,请帮助,谢谢。
搜索更多相关主题的帖子: Then 选择 条件 多级 End 
2019-12-13 21:29
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:5 
20 > Val(Text2) > 0
这是哪个老师教的这样写逻辑运算表达式的。
-----------------
text2 = 10
20 > Val(Text2) > 0
运算第一步:
20>10 ,真
运算第二步
真》0,假      ,真相当于 -1,假相当于 0
所以最终结果=假。
所以跳到最后的 ELSE 去了。

应该写成:
20 > Val(Text2) and  Val(Text2) > 0
==============
修改
首先,你多次使用 val(text2) 这个函数,因取属性的操作很慢,建议这里保存到一个变量里。
其次,单变量多级IF,可以使用 select case 来选择。

select case val(text2)
    Case Is <= 0
        Label16 = "输入错误"
    Case Is < 20
      BMoney = 5000
      Label16 = "20㎡以下,计:" & BMoney & "元"
    Case Is < 100
      BMoney = 10000
      Label16 = "20㎡(含)-100㎡,计:" & BMoney & "元"
    Case Is < 200
      BMoney = 15000
      Label16 = "100㎡(含)-200㎡,计:" & BMoney & "元"
    Case Is < 500
      BMoney = 20000
      Label16 = "200㎡(含)-500㎡,计:" & BMoney & "元"
    Case Else
      BMoney = 30000
      Label16 = "500㎡(含)以上,计:" & BMoney & "元"
End Select
-----------------

授人于鱼,不如授人于渔
早已停用QQ了
2019-12-14 13:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498384-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.303626 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved