You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:56:09