VBA中Select Case语句无法进入Case Else分支问题
VBA Select Case中Case Else无法触发的问题解决
你的代码里第二个Case的条件写法有语法错误,导致所有大于80的值(包括11000这种远大于90的数)都会被第二个Case匹配,Case Else永远触发不了。
VBA不支持连续用比较运算符(比如Is >80 <90),这种写法会被错误解析:
- 先算
nVcap03 > 80,11000的话结果是True(VBA里布尔值True等价于-1) - 再算
-1 < 90,结果还是True
所以整个条件返回True,11000就会进入第二个Case,轮不到Case Else。
下面是两种修正方案:
方案一:用To指定数值范围
如果要匹配80(含)到90(不含)的数值,代码可以改成这样:
Private Sub nM03KG_AfterUpdate() Select Case nVcap03 Case Is < 80 Me.nVcap03.BackColor = vbRed Me.nVcap03.ForeColor = vbWhite Case 80 To 89.999 ' 匹配80到90之间(不含90)的数值 Me.nVcap03.BackColor = RGB(255, 194, 14) Me.nVcap03.ForeColor = RGB(47, 54, 153) Case Else ' 匹配90及以上的数值 Me.nVcap03.BackColor = RGB(205, 220, 175) Me.nVcap03.ForeColor = RGB(47, 54, 153) End Select End Sub
方案二:用And组合逻辑条件
把Select Case的判断对象改为True,就能写更清晰的组合条件:
Private Sub nM03KG_AfterUpdate() Select Case True Case nVcap03 < 80 Me.nVcap03.BackColor = vbRed Me.nVcap03.ForeColor = vbWhite Case nVcap03 >= 80 And nVcap03 < 90 Me.nVcap03.BackColor = RGB(255, 194, 14) Me.nVcap03.ForeColor = RGB(47, 54, 153) Case Else Me.nVcap03.BackColor = RGB(205, 220, 175) Me.nVcap03.ForeColor = RGB(47, 54, 153) End Select End Sub
内容的提问来源于stack exchange,提问作者n00dnutt
相关产品推荐
相关产品推荐

